使用Firefox';打印';或';另存为';使用SeleniumWebDriver的功能

使用Firefox';打印';或';另存为';使用SeleniumWebDriver的功能,firefox,selenium,selenium-webdriver,Firefox,Selenium,Selenium Webdriver,我希望通过编程指导Firefox访问URL列表(例如,在文本文件中定义),并将每个URL的页面保存到磁盘或打印出来 我知道Selenium提供了一个功能来捕获页面的屏幕截图,但我想知道是否可以使用浏览器的本机保存和打印功能 如果Selenium没有提供这样的功能,是否有其他工具允许我定义一个由Firefox执行的脚本并获得类似的结果?通常您可以使用。开源社区(又称Mozilla基金会)正在进行一个名为“木偶网”的项目,该项目可以让你在不使用截图匹配的情况下完成这些事情,但它仍然是alpha,他们

我希望通过编程指导Firefox访问URL列表(例如,在文本文件中定义),并将每个URL的页面保存到磁盘或打印出来

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


如果Selenium没有提供这样的功能,是否有其他工具允许我定义一个由Firefox执行的脚本并获得类似的结果?

通常您可以使用。开源社区(又称Mozilla基金会)正在进行一个名为“木偶网”的项目,该项目可以让你在不使用截图匹配的情况下完成这些事情,但它仍然是alpha,他们仍在进行开发,Chrome和IE尚未登录


应该注意的是,在本机文件下载中,您实际上不需要测试已经经过良好测试的“另存为”对话框的浏览器功能。Selenium测试人员通常只需使用ApacheHttpUtils或类似工具下载文件,并在下载步骤中绕过浏览器即可。然后,您不需要使用“另存为”对话框,它将跨浏览器工作。只需使用selenium获取下载URL,然后用Java代码下载即可。

可以绕过打印对话框,在firefox中启用静默打印以打印到默认打印机


所需的firefox首选项是
print。始终\u print\u silent
,并且可以使用selenium进行如下设置:

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保存到预定义位置。

如果您对png格式满意,您可以拍摄完整的页面截图

import selenium.webdriver
进口硒。普通
options=selenium.webdriver.firefox.options.options()
#options.headless=True
使用selenium.webdriver.Firefox(options=options)作为驱动程序:
司机,上车http://google.com')
时间。睡眠(2)
root=驱动程序。通过标签名称('html')查找元素
root.screenshot('full page screenshot.png')

也许这可以帮助您。。。

我用python做了这个。。。
基本上,我会更改每次打印的about:config设置,调整要创建的pdf文件名,并将打印机设置为always\u print\u silent:true…

print。always\u print\u silent
非常有效。我正在尝试将其与Microsoft PDF打印机相结合,但我很难将纸张更改为A4。我试过两种方法:设置
print.printer\u Microsoft\u print\u to\u PDF.print\u paper\u data
to
9
print.printer\u Microsoft\u print\u to\u PDF.print\u paper\u name
to
iso\u a4
,但这两种方法似乎都被忽略了,因为我可以在
about:config
上看到它们的默认值