我正在与Selenium合作,现在有一个条件:
当我点击网页上的按钮时会弹出一个窗口弹出窗口。
现在我必须单击一个单选按钮(两个中的一个,即使我们发送了TAB也能正常工作)然后单击“确定”按钮。我在网上搜索并了解了“driver.getWindowHandle()
”。
但是我不知道处理新打开的窗口弹出窗口。 需要帮助。
答案 0 :(得分:1)
为了切换目的,你可以使用增强型for循环:
for (String winHandle : objDriver.getWindowHandles()) {
objDriver.switchTo().window(winHandle);
}
因此它会将控件从一个驱动程序窗口切换到子窗口。
要与窗口上的元素进行交互,请尝试使用您使用的任何工具查找元素,并在切换到窗口后执行所需的操作 。
要返回父窗口,您可以使用相同的循环或使用:
driver.switchTo().defaultContent();
答案 1 :(得分:0)
在这篇文章中查看我的答案并阅读评论,以帮助您理解getWindowHandle()和getWindowHandles()之间的区别
答案 2 :(得分:0)
我们在Windows / IE C#项目中使用AutoItX - https://www.autoitscript.com/site/处理了这种情况:
AutoItX3 autoIt = new AutoItX3();
var handle = autoIt.WinWaitActive("[window title]", "", 20);
Assert.IsTrue(handle != 0", string.Format("Was not able to find: {0}", [window title]);
autoIt.Send("{ESCAPE}"); // tab may work as well for selection
弹出窗口是一个Windows窗口,而不是IE的一部分,因此WebDriver不知道它。 希望这会有所帮助。