我正在尝试使用Chrome在无头模式下在Linux机器上运行机器人框架selenium python测试。所有的测试都运行得很好,直到我点击一个按钮来下载文件。当我尝试下载一个文件时,抛出以下错误:
"WebDriverException:消息: chrome不可访问(会话信息: headless chrome=64.0.3282.140) (驱动程序信息: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.9.27-14.31.amzn1.x86_64 x86_64)“
不过,同样的测试在windows上也能正常工作。
下面是我用来创建web驱动程序会话的代码。
Launch Headless Chrome
Create Download Directory
${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${chrome options} add_argument start-maximized
Call Method ${chrome_options} add_argument --headless
Call Method ${chrome_options} add_argument --disable-gpu
Call Method ${chrome_options} add_argument --window-size\=1920,1080
Call Method ${chrome_options} add_argument --lang\=en-us
Call Method ${chrome_options} add_argument --no-sandbox
${prefs} Create Dictionary download.default_directory=${download directory} download.prompt_for_download=false options.binary_location=/usr/bin/chromedriver
Call Method ${chrome options} add_experimental_option prefs ${prefs}
Create Webdriver Chrome chrome_options=${chrome options}
Enable Download In Headless Chrome ${download directory}
Go To about:blank
下面是用于启用下载行为和为chrome headless设置下载目录的代码。
def enable_download_in_headless_chrome(download_dir):
logger.info('Getting SeleniumLibrary Instance')
instance = BuiltIn().get_library_instance('SeleniumLibrary')
driver = instance.driver
# add missing support for chrome "send_command" to selenium webdriver
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
command_result = driver.execute("send_command", params)
logger.info("response from browser:")
for key in command_result:
logger.info("result:" + key + ":" + str(command_result[key]))
发布于 2018-02-17 20:51:45
您需要在中检查以下参数options.binary_location=/usr/bin/chromedriver
:
${prefs} Create Dictionary download.default_directory=${download directory} download.prompt_for_download=false options.binary_location=/usr/bin/chromedriver
在Python绑定中,它的定义如下,指的是chrome.exe
的位置:
@property
def binary_location(self):
"""
Returns the location of the binary otherwise an empty string
"""
return self._binary_location
将options.binary_location=/usr/bin/chromedriver
更改为options.binary_location=/path/to/chrome
https://stackoverflow.com/questions/48841073
复制相似问题