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