我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。我尝试了:
Alert printDialog = driver.switchTo().alert(); printDialog.dismiss();
但这没用。我也抓不到它的窗口句柄,因为它不是窗口…
是否可以处理这些对象?如何处理?
不幸的是,WebDriver无法处理这些(或任何其他浏览器或OS对话框)。此外,它们在浏览器/系统/语言设置中的外观往往有所不同,因此可能没有明确的答案。您需要检测并处理所有可能的情况,以使其在任何地方都有效。您的选择包括:
Robot
Enter
Esc
// press Escape programatically - the print dialog must have focus, obviously Robot r = new Robot(); r.keyPress(KeyEvent.VK_ESCAPE); r.keyRelease(KeyEvent.VK_ESCAPE);
差不多。如果可以避免出现“打印”对话框,请尝试截取页面的屏幕截图并使用标准Java工具进行打印。