您好,我想学习如何在不使用线程睡眠的情况下切换到新窗口。我试图使用等待人工制品,但无法正确完成。我正在尝试自动执行打印窗口。当我单击网页上的打印图标时,我导航到打印窗口,我想在导航到打印窗口时等待,一旦显示了打印窗口,我想单击“取消”按钮。有人可以帮我吗
Print_icon.click();
await().atMost(10,TimeUnit.SECOND).pollInterval(1,TimeUnit.SECONDS);
Cancel_button.click();
答案 0 :(得分:0)
您无法处理Windows对话框,因此建议您查看页面代码,并找到打开打印窗口并覆盖它的方法的名称。例如,在您的测试用例中,您可以覆盖print方法而不执行任何操作,例如:
((JavascriptExecutor)driver).executeScript("window.print=function(){};");
答案 1 :(得分:0)
您可以尝试以下方法:
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);