3

我正在使用 selenium 2.0 自动化,我的应用程序默认在新窗口中启动登录页面,因此我的应用程序默认有两个窗口。这两个窗口将始终保持打开状态。在这种情况下,我可以毫无问题地在窗口之间切换。下面的代码执行没有任何错误。

for(String winHandle : driver.getWindowHandles()){
        driver.switchTo().window(winHandle);
}   

单击菜单选项时会出现问题,弹出窗口会启动以搜索记录。在这里,我需要在这三个窗口之间切换。我尝试了下面的代码。它只返回前两个窗口句柄。

设置 availableWindows = driver.getWindowHandles();

这个弹出窗口的编码方式是“在 .jsp 文件中,它被参数化为 window.open()”。

请让我知道,如果有人可以帮助我吗?

4

2 回答 2

1

如果您在 getWindowHandles() 中只看到 2 个窗口,则弹出窗口可能是 iframe。在这种情况下,使用 driver.switchTo().frame() 将焦点切换到该帧,而不是寻找一个全新的窗口。

这是关于切换方法的文档: http: //selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.html#switchTo()

于 2013-07-29T14:48:29.293 回答
0

一种可能的解决方案是使用 JavascriptExecutor.executeScript() 方法运行 javascript 代码并在不切换到弹出窗口的情况下处理弹出窗口。

例如,从弹出窗口的父窗口中,运行类似这样的 javascript 代码。

JavascriptExecutor exec = (JavascriptExecutor)driver;exec.executeScript("var popup = <<popupopener function>>; //operate on popup object to manipulate the markup of pop up window");
于 2013-07-29T10:25:35.333 回答