【问题标题】:How to wait in selenium for switching to new windows如何在硒中等待切换到新窗口
【发布时间】:2018-09-12 16:36:03
【问题描述】:
您好,我想学习如何在不使用线程睡眠的情况下切换到新窗口。我试图使用等待工件,但我无法正确完成。我试图自动化打印窗口。当我单击网页上的打印图标时,我导航到打印窗口,我想在导航到打印窗口时等待,一旦显示打印窗口,我想单击取消按钮。有人可以帮我吗
Print_icon.click();
await().atMost(10,TimeUnit.SECOND).pollInterval(1,TimeUnit.SECONDS);
Cancel_button.click();
【问题讨论】:
标签:
java
selenium
selenium-webdriver
selenium-chromedriver
【解决方案1】:
你可以试试这个:
Print_icon.click();
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
}
boolean elmnt = false;
boolean timeOut = false;
int second = 1;
do {
try {
if(second>30) {
timeOut = true;
}
Cancel_button.click();
elmnt=true;
} catch (Exception e) {
TimeUnit.SECONDS.sleep(1);
second++;
}
}while(elmnt==false && timeOut==false);
【解决方案2】:
您无法处理 Windows 对话框,因此我建议您查看页面代码并找到打开打印窗口的方法的名称并覆盖它。例如,在您的测试用例中,您可以重写 print 方法以不执行任何操作,如下所示:
((JavascriptExecutor)driver).executeScript("window.print=function(){};");