WebDriverException: Сообщение: неизвестная ошибка: Chrome не удалось запустить: ошибка при использовании ChromeDriver Chrome через Selenium Python на Amazon Linux - PullRequest
1 голос
/ 05 февраля 2020

Просто чтобы показать, что я провел должную старательную работу, я уже либо попробовал предложенные ответы, либо, по крайней мере, перечитал их и попытался понять следующие вопросы:

Selenium: WebDriverException : Chrome не удалось запустить: сбой, так как google-chrome больше не работает, поэтому ChromeDriver предполагает, что Chrome произошел сбой

Процесс запущен из chrome location C : \ .. \ Chrome \ Application \ chrome .exe больше не работает, поэтому ChromeDriver предполагает, что Chrome произошел сбой

библиотека Selenium python через docker , Chrome ошибка не запустилась: аварийный выход

Chrome вылетает при использовании Selenium (ответ не опубликован, но я все еще просмотрел его)

Как исправить "usr / bin / google-chrome больше не работает, поэтому ChromeDriver предполагает, что ошибка Chrome потерпела крах" в Linux? - для этого я заменил / usr / bin / google-chrome 'с' / etc / alternatives / google-chrome ', все еще не работает.

Процесс, запущенный из chrome location / usr / bin / google-chrome, больше не выполняется, поэтому ChromeDriver предполагает, что Chrome произошел сбой для Selenium

selenium.common.exceptions.WebDriverException: Сообщение: неизвестная ошибка: Chrome не удалось запустить: сбой с ChromeDriver и Selenium в Python

python linux селен: chrome недоступен

неизвестная ошибка: Chrome не удалось запустить: сбой (селен, режим без головы)

python селен: WebDriverException: Сообщение: chrome недоступно

Селен chrome не удалось запустить

WebDriverException: Сообщение: неизвестная ошибка : Chrome не удалось запустить: аварийное завершение с ChromeDriver Chrome и Selenium через Python на VPS

Получение ошибки "Chrome not достижимо" при выполнении тестовых сценариев в Selenium Сетка с Chrome браузером

Ошибка веб-драйвера Selenium Chrome ошибка редактировать для запуска

org.openqa.selenium.WebDriverException: неизвестная ошибка: Chrome не удалось запустить: сбой (без головы chrome)

Python: Selenium - Сообщение: неизвестная ошибка: Chrome не удалось запустить: аварийный выход

Я получаю общую ошибку, которую я видел здесь при переполнении стека, при запуске Selenium с Python на моем сервере Amazon Linux я получаю следующие результаты:

Traceback (most recent call last):
  File "test-selenium-chrome.py", line 15, in <module>
    driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will search path.i
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Вот мой код:

#!/usr/bin/python3
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display

options = Options()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--disable-extensions')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9515')
options.add_argument('--disable-setuid-sandbox')

display = Display(visible=0, size=(800, 800))
display.start()

driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')  # Optional argument, if not specified will seearch path.i
driver.maximize_window()
driver.get('http://www.google.com/')
time.sleep(5)  # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)  # Let the user actually see something!
driver.quit()

Я использую Google Chrome версия 79.0.3945.130 и соответствующая версия ChromeDriver ChromeDriver 79.0.3945.36, как указано в https://sites.google.com/a/chromium.org/chromedriver/downloads

Дополнительная информация: если я просто запускаю google-chrome из командной строки, я получаю:

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

Любая помощь приветствуется.

1 Ответ

1 голос
/ 06 февраля 2020

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

... означает, что ChromeDriver не смог инициировать / порождать новый Контекст просмотра т.е. Chrome Браузер сеанс.


Согласно обсуждению в Selenium: WebDriverException: Chrome не удалось запустить: произошел сбой, поскольку google-chrome больше не работает, поэтому ChromeDriver работает при условии, что Chrome произошел сбой , ожидаемое местоположение по умолчанию на :

/usr/bin/google-chrome

Примечание : для систем Linux ChromeDriver ожидает, что /usr/bin/google-chrome будет символической ссылкой на фактический двоичный файл Chrome.

Таким образом, в идеале должен работать следующий минимальный код:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = '/usr/bin/google-chrome'
driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
driver.get('http://www.google.com/')

Но, похоже, при попытке инициировать сеанс Chrome вручную Ошибка сегментации происходит, т.е. происходит сбой следующим образом:

[ec2-user@ip-xxx-xx-xx-xxx bin]$ pwd
/usr/bin
[ec2-user@ip-xxx-xx-x-xxx bin]$ google-chrome
Segmentation fault

Ошибка сегментации

Ошибка сегментации (сокращено до segfault) или нарушение доступа является ошибкой или условием сбоя поднятые аппаратным обеспечением с защитой памяти, уведомляющие операционную систему о том, что программное обеспечение попыталось получить доступ к ограниченной области памяти. В ответ ядро ​​ОС обычно выполняет некоторые корректирующие действия, как правило, передавая ошибку в вызывающий процесс (ваш сценарий), отправляя процессу сигнал.

Короче говоря, это вспомогательный механизм для ограничения программ / Скрипты от повреждения памяти, которая не принадлежит ей. Подробнее здесь .


Причина и решения

Возможные причины и решения:

  • Chrome вообще не установлен в системе, поэтому необходимо установить Chrome
  • Chrome не установлен в месте по умолчанию, поэтому вы должны передать правильное местоположение chrome исполняемого файла через свойство binary_location.
  • Символическая ссылка /usr/bin/google-chrome в действительный двоичный файл Chrome повреждена, поэтому вам, возможно, придется создайте символическую ссылку.
  • У пользователя нет необходимых прав доступа /usr/bin/google-chrome, поэтому вы должны предоставить права доступа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...