无法在窗口之间切换

时间:2013-07-29 10:16:29

标签: selenium webdriver selenium-webdriver

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

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

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

设置availableWindows = driver.getWindowHandles();

此弹出窗口的编码方式为“在.jsp文件中将其参数化为window.open()”。

请告诉我,如果有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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");