String mainWinHander = webDriver.getWindowHandle();
// code for clicking button to open new window is ommited
//Now the window opened. So here reture 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 popup = webDriver.switchTo().window(handle);
// do something with popup
popup.close();
}
}
WebElement link = // element that will showModalDialog()
// Click on the link, but don't wait for the document to finish
final JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript(
"var el=arguments[0]; setTimeout(function() { el.click(); }, 100);",
link);
// wait for there to be two windows and choose the one that is
// not the original window
final String parentWindowHandle = driver.getWindowHandle();
new WebDriverWait(driver, 60, 1000)
.until(new Function<WebDriver, Boolean>() {
@Override
public Boolean apply(final WebDriver driver) {
final String[] windowHandles =
driver.getWindowHandles().toArray(new String[0]);
if (windowHandles.length != 2) {
return false;
}
if (windowHandles[0].equals(parentWindowHandle)) {
driver.switchTo().window(windowHandles[1]);
} else {
driver.switchTo().window(windowHandles[0]);
}
return true;
}
});
9条答案
按热度按时间uajslkp61#
用途
以下方法切换到modelframe
或
希望这个能管用
2ledvvac2#
您使用的不是模型对话框,而是一个单独的窗口。
使用此代码:
sirbozc53#
Try the below code. It is working in IE but not in FF22. If
找到模态对话框is printed in Console, then Modal dialog is identified and switched.
euoag5mw4#
R(R selenium )溶液:我有一个弹出对话框(这是动态生成的),因此在原始页面源代码中无法检测这里是为我工作的方法:
方法1:模拟按Tab键并切换到该模态对话框我的当前键集中在模态对话框
后面的下拉按钮方法2:如果你能找到框架(或iframe),将焦点移到它
现在你可以在框架中搜索元素了。记住在命令之间放置足够的Sys.sleep,以便正确加载元素(以防万一)
mrwjdhj35#
试试这个代码,包括你的对象名和变量工作.
8ehkhllq6#
我试过了,对你很有效。
holgip5t7#
假设预期只是弹出两个窗口(一个父窗口,一个弹出窗口),那么只需等待两个窗口出现,找到另一个窗口句柄并切换到它。
ibrsph3r8#
不,模型窗口需要由javaScriptExecutor处理,因为主要模型窗口由窗口模型组成,这将在模型出现后工作,然后控制进入模型并单击预期元素。
必须导入javascriptexector
如下所述,
pes8fvy99#
pidoss. 1加上我的2美分,即使问题太老了
你可以创建一个类似上面的方法,并在需要的地方调用它。
pidoss. 2 -你也可以改变键盘输入(如向上箭头,向下箭头,向下翻页等)