如何通过Selenium+Robot Framework设置Chrome下载PDF而非新标签打开
解决方法
你当前使用的plugins.plugins_disabled参数对新版Chrome已经失效,且代码中存在变量名拼写不一致的问题,按以下方式调整配置即可:
- 修正
ChromeOptions的首选项配置,将PDF相关的控制参数替换为新版Chrome支持的配置项 - 修正变量名拼写错误(原代码中定义的变量是
${chrome options},日志打印时写的是${chrome_options},存在空格和下划线的拼写差异)
修正后的完整关键字代码如下:
*** Settings *** Documentation Common setup and teardown steps Library SeleniumLibrary Resource UtilManager.robot *** Keywords *** Begin Test [Arguments] ${BROWSER} ${BASE_URL} @{workingDirs} UtilManager.Get Current Working Directories # 转换为Chrome支持的绝对路径下载目录 ${download_dir}= Convert To Path ${workingDirs}[1] ${download_dir}= Get Absolute Path ${download_dir} ${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver Log ${chrome_options} # 新版Chrome禁用内置PDF阅读器、强制下载的配置 ${prefs} Create Dictionary ... download.default_directory=${download_dir} ... download.prompt_for_download=False ... download.directory_upgrade=True ... plugins.always_open_pdf_externally=True Call Method ${chrome_options} add_experimental_option prefs ${prefs} Create Webdriver ${BROWSER} chrome_options=${chrome_options} Go To ${BASE_URL} Maximize Browser Window
额外注意事项
- 如果使用Chrome无头模式运行用例,需要额外添加启动参数
--headless=new,旧版无头模式不支持下载配置 - 确认Chrome浏览器和对应ChromeDriver的大版本号一致,避免版本不兼容导致配置失效
内容的提问来源于stack exchange,提问作者Avik Datta
相关产品推荐
相关产品推荐

