Selenium Python绑定和Opera-将页面另存为PDF

时间:2018-07-23 17:58:14

标签: selenium selenium-webdriver selenium-chromedriver opera operadriver

Opera提供了将网页另存为PDF文件的选项。如果连接到网页并右键单击它,则可以使用“另存为PDF”选项,该选项可将网页另存为PDF文件。我想在Selenium的Python绑定(和Operadriver)中访问此选项。

我能够整理一个脚本来打开网页并打印(通过发送window.print() Javascript命令)。通过在Kiosk模式下运行Opera,可以避免出现“打印”对话框,但仍会显示“另存为”对话框,询问生成的PDF文件的文件名。 因此,我希望该解决方案跳过“另存为”对话框,而是从Python指定PDF文件的名称。这样,所有操作将实现自动化,并且不需要用户交互。

另一种解决方案是直接访问“另存为PDF”选项,而无需通过“打印”屏幕,但是我不知道该怎么做。

这是我的MWE(第一个选项-打印到PDF文件):

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import json

path_to_operadriver = r"C:\Users\RMANCUSO00\Documents\programmi\operadriver.exe"
opera_path = r"C:\Users\RMANCUSO00\AppData\Local\Programs\Opera\launcher.exe"

appState = {
"recentDestinations": [
    {
        "id": "Save as PDF",
        "origin": "local"
    }
],
"selectedDestinationId": "Save as PDF",
"version": 2
}

downloadPath = "./"

profile = {'printing.print_preview_sticky_settings.appState':json.dumps(appState),
'savefile.default_directory':downloadPath}

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_experimental_option('prefs', profile) 
chrome_options.add_argument('--kiosk-printing')
chrome_options.binary_location = opera_path

driver = webdriver.opera.webdriver.OperaDriver(executable_path=path_to_operadriver, 
opera_options=chrome_options)

driver.implicitly_wait(30)

url="http://www.feynmanlectures.caltech.edu/III_20.html"
driver.get(url) 
driver.execute_script('window.print();')

0 个答案:

没有答案