首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在linux中尝试以无头模式下载文件时出现"WebDriverException: Message: chrome not reachable“

在linux中尝试以无头模式下载文件时出现"WebDriverException: Message: chrome not reachable“
EN

Stack Overflow用户
提问于 2018-02-17 20:05:52
回答 1查看 2.2K关注 0票数 1

我正在尝试使用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驱动程序会话的代码。

代码语言:javascript
复制
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设置下载目录的代码。

代码语言:javascript
复制
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]))
EN

回答 1

Stack Overflow用户

发布于 2018-02-17 20:51:45

您需要在中检查以下参数options.binary_location=/usr/bin/chromedriver

代码语言:javascript
复制
${prefs}       Create Dictionary    download.default_directory=${download directory}    download.prompt_for_download=false   options.binary_location=/usr/bin/chromedriver

在Python绑定中,它的定义如下,指的是chrome.exe的位置:

代码语言:javascript
复制
@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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48841073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档