"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