abd345 发表于 2016-2-2 09:03:16

【分享】模态窗口元素定位问题

我遇到的情况时主窗体是模态窗口,弹出的窗口也是模态窗口,执行脚本时,出现driver挂死的情况。网上找了很多帖子,找到一个可以使用的方法,有出现同样情况的朋友可以试试。
部分代码:
                // 点击新建按钮
                WebElement add = driver.findElement(By.xpath("//nobr"));
                JavascriptExecutor jse = (JavascriptExecutor) driver;
                String js = "window.open(URL)";
                jse.executeScript(js);
                // 切换到新建窗口
                for (String winHandle : driver.getWindowHandles()) {
                        System.out.println("++++:" + winHandle);
                        if (winHandle.equals("") || winHandle == null) {
                                continue;
                        } else if (winHandle.equals(beforeHandle)) {
                                continue;
                        } else {
                                driver.switchTo().window(winHandle);
                                break;
                        }
                }

使用JS打开新窗口,新窗口就不是模态对话框了,把上面代码的URL替换成要打开的新窗口URL即可。如果大家有更好的方法,希望回复学习一下。

prettyfool 发表于 2016-2-3 11:19:56

else if (winHandle.equals(beforeHandle)) {
                              continue;
}
这句是什么意思,beforeHandle是什么意思

abd345 发表于 2016-2-14 14:16:30

beforeHandle是原窗口的句柄变量,代码没有贴出来。这句话就是判断是否是原窗口句柄,如果是循环继续。
页: [1]
查看完整版本: 【分享】模态窗口元素定位问题