我正在使用selenium 2.0自动化,我的应用程序默认在新窗口中启动登录页面,因此我的应用程序默认有两个窗口。这两个窗口将始终保持打开状态。在这种情况下,我可以毫无问题地在窗口之间切换。执行以下代码时没有任何错误。
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
当点击弹出窗口启动以搜索记录的菜单选项时,问题就开始了。在这里,我需要在这三个窗口之间切换。我尝试了下面的代码。它只返回前两个窗口句柄。
设置availableWindows = driver.getWindowHandles();
此弹出窗口的编码方式为“在.jsp文件中将其参数化为window.open()”。
请告诉我,如果有人可以帮我这个吗?
答案 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");