一尘不染

使用Selenium WebDriver使用Firefox的“打印”或“另存为”功能

selenium

我想以编程方式指示Firefox访问URL列表(例如,在文本文件中定义),然后将每个URL保存到磁盘或打印该页面。

我知道Selenium提供了捕获页面截图的功能,但是我想知道是否可以使用浏览器的本机保存和打印功能。

如果Selenium不提供此类功能,是否可以使用其他任何工具来定义要由Firefox执行的 脚本 并获得相似的结果?


阅读 1098

收藏
2020-06-26

共1个答案

一尘不染

可以绕过“打印”对话框,在firefox中启用无声打印以打印到默认打印机。

所需的firefox首选项为print.always_print_silent,并且可以使用硒进行设置,如下所示:

import org.openqa.selenium.JavascriptExecutor;
/* ... */
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("print.always_print_silent", true);
WebDriver driver = new FirefoxDriver(profile);

现在,只需导航到网页并使用javascript调用print:

driver.get("http://www.google.com");
((JavascriptExecutor)driver).executeScript("window.print();");

此外,将其与免费的PDF打印机(例如novaPDF)结合使用时,无需显示“另存为”对话框即可进行打印,并自动将PDF保存到预定义的位置。

2020-06-26