当前位置: 首页 > 知识库问答 >
问题:

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

邢良才
2023-03-14

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

Alert printDialog = driver.switchTo().alert();
printDialog.dismiss();

但它不起作用。而且我抓不到它的窗口把手,因为它不是一个窗口。。。

是否有可能处理这些对象,如何处理?

共有3个答案

江烨伟
2023-03-14

我能够通过添加 - kiosk打印来解决此问题,这完全绕过了打印对话框。我的默认打印设置为pdf,所以我最终在我的下载文件夹中有一个pdf,但至少硒不会挂起。代码如下所示:

        ChromeOptions cOptions = new ChromeOptions();
        cOptions.addArguments("kiosk-printing");
        RemoteWebDriver driver = new RemoteWebDriver(hostUrl, cOptions);
齐铭
2023-03-14

一个CAN处理铬硒的打印对话框。不确定其他浏览器。

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

右键单击打印对话框-

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

//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();
屠昌胤
2023-03-14

不幸的是,WebDriver无法处理这些(或任何其他浏览器或操作系统对话框)。此外,它们在浏览器/系统/语言设置中的外观往往不同,因此可能没有明确的答案。您需要检测和处理每一种可能的情况,以便使其在任何地方都能工作。您的选择包括:

>

  • Robot类,它允许您以编程方式“按下”键盘上的任何内容(或盲目单击),从而通过按EnterEsc来摆脱对话框。但是,如上所述,任何高级交互都取决于操作系统/语言/打印机。

    // press Escape programatically - the print dialog must have focus, obviously
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_ESCAPE);
    r.keyRelease(KeyEvent.VK_ESCAPE);
    

    自动驾驶。这是一个适用于处理任何系统级自动化的Windows程序。与上述相同的依赖性。

    差不多就是这样。如果可以避免打印对话框,请尝试截图并使用标准Java工具打印。

  •  类似资料:
    • 问题内容: 我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。我尝试了: 但这没用。我也抓不到它的窗口句柄,因为它不是窗口… 是否可以处理这些对象?如何处理? 问题答案: 不幸的是,WebDriver无法处理这些(或任何其他浏览器或OS对话框)。此外,它们在浏览器/系统/语言设置中的外观往往有所不同,因此可能没有明确的答案。您需要检测并处理所有可能的情况,以使其在任何地方都有效。您

    • 问题内容: 我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。我尝试过: 但这没用。我也抓不到它的窗口句柄,因为它不是窗口… 是否可以处理这些对象?如何处理? 问题答案: 不幸的是,WebDriver无法处理这些(或任何其他浏览器或OS对话框)。此外,它们在浏览器/系统/语言设置中的外观往往有所不同,因此可能没有明确的答案。您需要检测并处理所有可能的情况,以使其在任何地方都有效。您

    • 我试图找出如何单击按钮“停用”。这是html代码: 我试着这样点击这个按钮: 但是这没有帮助

    • 主要内容:命令行打印机控制,测试打印机是否存在也可以通过命令从批处理脚本中控制打印。 语法 其中, - 指定打印设备。 示例 上述命令将打印文件到并行端口。 命令行打印机控制 从Windows 2000开始,可以使用和从Windows的命令行配置许多但不是全部的打印机设置 语法 有一些可用的选项是以下 - /dl - 删除本地打印机。 /dn - 删除网络打印机连接。 /dd - 删除打印机驱动。 /e - 显示打印首选项。 /f[file]

    • 接收字节数组(表示任何内容:某种有线格式、某种形式的编码数据、带有嵌入“文本”的二进制数据等)。我希望能够以以下形式打印数组: 作为十六进制字符串 作为“可打印”文本 第一种情况部分是出于调试的原因,但也可以在非调试模式下使用。第二种情况纯粹是出于调试的原因,并允许人类与其他信息源进行比较。 如果任何人有如何实现这一点的信息,我将非常感谢。

    • 本文向大家介绍如何在Java中处理Selenium中的代理?,包括了如何在Java中处理Selenium中的代理?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助PROXY类在Java中使用Selenium处理代理。