在 selenium 中,WebDriver.switchTo().window(aWindowHander)
用于切换不同的窗口。但我在 IE9 中有一个问题:
我认为,单击按钮时,javascript会打开一个新窗口。并WebDriver.getWindowHandles()
返回两个窗口处理程序。这意味着检测到新打开的窗口。但是WebDriver.switchTo.window(newOpenedWindow)
没有错误就被阻塞,永远阻塞。没有例外,没有错误,只是在这里阻塞。似乎新窗口总是得到焦点。
我还没有尝试过其他浏览器,因为 IE9 只是出于某种原因使用。
我的天啊!有人可以给我一些帮助吗?
===更新代码片段===
WebElement input = webDriver.findElement(By.id("inputField"));
input.sendKeys("hello");
/* Make a 'tab' opertation to lose focus.
* This will trigger the new window opening.
* Unfortunately, the web site is not mine.
* And only IE support, some detail javascript is not read clearly.
* I can't be sure that how the new winodw opens. It seems to use
* 'window.location = newurl' for doing that.
*/
input.sendKeys(Keys.TAB);
//Now the window opened. So here return the handle with size = 2
Set<String> handles = webDriver.getWindowHandles();
for(String handle : handles)
{
if(!mainWinHander.equals(handle))
{
// Here will block for ever. No exception and timeout!
webDriver.switchTo().window(handle);
}
}
此代码适用于 This post modal dialog。http://tinyurl.com/ykt97gx上的示例链接。但不适用于我的问题。所以重点应该是新窗口打开的方式。页面由几个框架组成。我尝试建立一个网站来模拟打开此类窗口的情况,但失败了。真正的网站需要企业vpn才能访问。所以不能在外面参观。