"WebDriverException: сообщение: Chrome недоступен" при попытке загрузить файл в автономном режиме в Linux

Я пытаюсь запустить тесты Python Selena Framework на компьютере с Linux, используя Chrome в режиме без головы. Все тесты работают нормально, пока я не нажму кнопку, чтобы загрузить файл. При попытке загрузить файл выдается следующее сообщение об ошибке:

"WebDriverException: Сообщение: Chrome недоступен (информация о сеансе: Chrome без головы =64.0.3282.140) (Информация о драйвере: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881), платформа =Linux 4.9.27-14.31.amzn1._8664) x

Тот же тест отлично работает в Windows, хотя.

Ниже приведен код, который я использую для создания сеанса веб-драйвера.

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 без головы.

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]))

1 ответ

Вам необходимо проверить следующий параметр 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

Другие вопросы по тегам