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

Я знаю, что есть несколько ответов на этот вопрос, но пока у меня ничего не получилось, поэтому я публикую новый вопрос.

Недавно я переключил компьютеры и с тех пор не могу запустить хром с селеном. Я также пробовал Firefox, но браузер просто не запускается.

from selenium import webdriver

d = webdriver.Chrome('/home/PycharmProjects/chromedriver')

d.get('https://www.google.nl/')

я получаю следующую ошибку:

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233, platform=Linux 4.15.0-38-generic x86_64)

у меня установлена последняя версия Chrome и хромедрайвер

РЕДАКТИРОВАТЬ: После попытки решения @b0sss я получаю следующую ошибку.

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so chromedriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-38-generic x86_64)

Ответы

Ответ 1

Попробуйте скачать ЗДЕСЬ и использовать эту последнюю версию драйвера Chrome.

https://sites.google.com/a/chromium.org/chromedriver/downloads

РЕДАКТИРОВАТЬ:

Попробуй это:

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')

Ответ 2

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

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

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

Ваша основная проблема заключается в том, что браузер Chrome не установлен по умолчанию в вашей системе.

Сервер, т.е. ChromeDriver, ожидает, что Chrome будет установлен в расположение по умолчанию для каждой системы, как показано на рисунке ниже:

Chrome_binary_expected_location

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


Решение

Если вы используете исполняемый файл Chrome в нестандартном расположении, вы должны переопределить двоичное расположение Chrome. следующее:

  • Решение Python:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"
    driver = webdriver.Chrome(chrome_options = options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    print("Chrome Browser Invoked")
    driver.quit()
    
  • Решение Java:

Chrome executable in a non-standard location

Ответ 3

У меня была похожая проблема, и я обнаружил, что аргументы параметров должны быть в определенном порядке. Мне известны только два аргумента, которые требовались для того, чтобы это работало на моей машине с Ubuntu 18. Этот пример кода работал на моем конце:

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

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

d = webdriver.Chrome(executable_path=r'/home/PycharmProjects/chromedriver', chrome_options=options)
d.get('https://www.google.nl/')

Ответ 4

Я столкнулся с точной проблемой при запуске в Docker-контейнере (в среде сборки). После того, как ssh в контейнер, я попытался запустить тест вручную и все еще сталкивался

(unknown error: DevToolsActivePort file doesn't exist)
     (The process started from chrome location /usr/bin/google-chrome-stable is 
      no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Когда я попытался запустить Chrome локально /usr/bin/google-chrome-stable, выдается сообщение об ошибке

Running as root without --no-sandbox is not supported

Я проверил свои ChromeOptions, и в нем отсутствовал --no-sandbox, поэтому он не мог вызвать Chrome.

capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)

Ответ 5

в моем случае ошибка была с пользователем www-data, но не с обычным пользователем в процессе разработки. Ошибка была проблемой для инициализации дисплея x для этого пользователя. Итак, проблема была решена при запуске моего теста селена без открытия окна браузера без заголовка:

opts.set_headless(True)

Ответ 6

надеюсь, это поможет кому-то. это работало для меня на Ubuntu 18.10

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
driver.get('http://www.google.com')
print('test')
driver.close()

Ответ 7

Предполагая, что вы уже загрузили chromeDriver, эта ошибка также возникает, когда уже открыто несколько вкладок Chrome.

Если вы закроете все вкладки и запустите снова, ошибка должна исчезнуть.

Ответ 8

Эта ошибка возникала случайно во время моих тестовых прогонов в течение последних шести месяцев (все еще происходит с Chrome 76 и Chromedriver 76) и только в Linux. В среднем один из каждых нескольких сотен тестов не будет выполнен, тогда следующий тест будет работать нормально.

Не удалось решить проблему, в Python я обернул driver = webdriver.Chrome() в блок try..except в setUp() в моем классе тестовых примеров, из которого получены все мои тесты. Если он попадает в исключение Webdriver, он ждет десять секунд и пытается снова.

Это решило проблему, с которой я столкнулся; не элегантно, но это работает.

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

try:
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
    print("\nChrome crashed on launch:")
    print(e)
    print("Trying again in 10 seconds..")
    sleep(10)
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
    print("Success!\n")
except Exception as e:
    raise Exception(e)

Ответ 9

Для RobotFramework

Я решил это! используя --no-sandbox

${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    test-type
Call Method    ${chrome_options}    add_argument    --disable-extensions
Call Method    ${chrome_options}    add_argument    --headless
Call Method    ${chrome_options}    add_argument    --disable-gpu
Call Method    ${chrome_options}    add_argument    --no-sandbox
Create Webdriver    Chrome    chrome_options=${chrome_options}

вместо

Open Browser    about:blank    headlesschrome
Open Browser    about:blank    chrome