andyclock 发表于 2016-1-20 16:27:38

webdriver如何切换到div弹出框

在一个iframe中弹出一个div 模拟的弹出框, class 同后面的小窗一样都是dialog_box,id是 "dialog_box_94201" 后面5位数字是动态,弹出框的id也是一样格式,仅后面5位数字不一致,这种情况如何模拟点击弹出框中的ok按钮? 试过用switch to alert失败。

zzhengjian 发表于 2016-1-21 21:51:02

div不用切换。跟其他元素一样的定位就可以了。

yye_2010 发表于 2016-1-22 15:37:46

我也遇到了,无法点击,使用id和class都定位不到

andyclock 发表于 2016-1-22 16:33:58

yye_2010 发表于 2016-1-22 15:37
我也遇到了,无法点击,使用id和class都定位不到

的确不要切换,我这边是想点击button按钮,最后用了xpath找button上的文本,By.xpath(“//*)

andyclock 发表于 2016-1-22 16:39:55

zzhengjian 发表于 2016-1-21 21:51
div不用切换。跟其他元素一样的定位就可以了。

谢谢回复,现在又碰到一个新问题,切换窗口, 系统点击一个主窗口的按钮,弹出一个子窗口,我用以下代码来切换,然后获取当前窗体URL,打印出来的URL竟然不是当前所见的两个窗体的,去查看该URL只有一个button,请问有没有碰到过类似情况,有何解决方案?

                Set<String> handles = driver.getWindowHandles();
                String currentHandle = driver.getWindowHandle();
                for(String handle : handles){
                        if(!handle.equals(currentHandle)){
                                driver.switchTo().window(handle);
                                break;
                                }
                }

zzhengjian 发表于 2016-1-23 16:07:20

andyclock 发表于 2016-1-22 16:39
谢谢回复,现在又碰到一个新问题,切换窗口, 系统点击一个主窗口的按钮,弹出一个子窗口,我用以下代码来 ...

你的代码只有在两个窗口的时候是正确的,可以改下按窗口上的title来切换。
打印下你的getWindowHandles,或许已经不止两个窗口了。

andyclock 发表于 2016-1-25 12:36:19

zzhengjian 发表于 2016-1-23 16:07
你的代码只有在两个窗口的时候是正确的,可以改下按窗口上的title来切换。
打印下你的getWindowHandles ...

打印了下getWindowhandles发现只有一个,后来网上查了下文章结合chrome开发模式查看,应该是一个frameset 包含frame 做成一个类似窗口的弹出框,上面有URL但是无法编辑,然后我用xpath chrome开发模式里侦测右键复制获得的xpath, 但是switch to的时候失败,找不到元素,frameset 和 frame也没有id 或者name之类的属性。。。到这一步又卡住了。。。

zzhengjian 发表于 2016-1-26 21:09:29

andyclock 发表于 2016-1-25 12:36
打印了下getWindowhandles发现只有一个,后来网上查了下文章结合chrome开发模式查看,应该是一个frameset ...

不清楚你的具体网页情况,但是根据你的描述来看,也有可能是一个modeldialog. 即使是frame做成的弹出框,也应该不会有URL在上面,有地址栏的话就应该是一个独立的浏览器窗口。
页: [1]
查看完整版本: webdriver如何切换到div弹出框