首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Selenium中如何处理打印对话框?

在Selenium中如何处理打印对话框?
EN

Stack Overflow用户
提问于 2012-07-18 16:20:54
回答 5查看 44.5K关注 0票数 34

我必须处理打印对话框(与在浏览器中单击ctrl-p时出现的对话框相同)。我尝试过:

代码语言:javascript
复制
Alert printDialog = driver.switchTo().alert();
printDialog.dismiss();

但它并没有起作用。我也不能抓住它的窗口句柄,因为它不是一个窗口...

是否可以处理这些对象以及如何处理这些对象?

EN

回答 5

Stack Overflow用户

发布于 2018-03-29 23:56:19

可以在Chrome中使用Selenium处理打印对话框。不确定是否使用其他浏览器。

在ChromeDriver-2.17中添加了对打印对话框的访问。详情可在此处找到:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1087

右击Print对话框-> Inspect Element。因此,DOM of Print对话框将在单独的窗口中打开。现在,您可以为对话框上的任何元素生成定位器,并在测试中使用它们。

要关闭打印对话框,可以执行以下操作:

代码语言:javascript
复制
//Switch to Print dialog
Set<String> windowHandles = driver.getWindowHandles();
if (!windowHandles.isEmpty()) {
    driver.switchTo().window((String) windowHandles.toArray()[windowHandles.size() - 1]);
}
//Now work with the dialog as with an ordinary page:  
driver.findElement(By.className("cancel")).click();
票数 11
EN

Stack Overflow用户

发布于 2020-06-08 04:19:10

我能够通过添加--kiosk-printing来解决这个问题,它完全绕过了打印对话框。我将我的默认打印设置为pdf,所以我最终在我的Downloads文件夹中得到了一个pdf,但至少selenium不会挂起。下面是代码的样子:

代码语言:javascript
复制
        ChromeOptions cOptions = new ChromeOptions();
        cOptions.addArguments("kiosk-printing");
        RemoteWebDriver driver = new RemoteWebDriver(hostUrl, cOptions);
票数 4
EN

Stack Overflow用户

发布于 2014-05-07 06:20:30

Slanec的回答是正确的-- WebDriver没有这方面的原生功能。我在Windows中解决这个问题的方法是使用System.Windows.Forms.SendKeys对象:

代码语言:javascript
复制
    SendKeys.SendWait("^p");
    System.Threading.Thread.Sleep(500);
    SendKeys.SendWait("~");

    // give it a minute to spool onto the printer
    System.Threading.Thread.Sleep(5000);

实际上,我已经在一个循环中打印了一堆语句。就像一种护身符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11537103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档