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)

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

Обновлено: После попытки решения @ 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)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
75
0
154 109
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

Ответ принят как подходящий

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

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

Обновлено:

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

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')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')

Я уже скачал последнюю версию хромированного драйвера с этого места.

SOeh 30.10.2018 23:40

@SOeh попробуйте отредактированное решение

NgoCuong 30.10.2018 23:43

Я думаю, что это для docker env.

petertc 17.05.2019 06:38

Я попробовал этот метод, добавив 3 аргумента, и, похоже, все работает нормально.

Mzndako 25.07.2019 20:03

Убедитесь, что опция --no-sandbox является первой (в отличие от этого примера, где первая опция - --headless. Я продолжал получать эту ошибку, пока я не переместил --no-sandbox в верхнюю часть списка, добавив его в качестве первого варианта.

parsecer 25.09.2019 00:05

Примечание: from selenium.webdriver.chrome.options import Options

Jacob Stern 01.10.2019 19:54

насколько я знаю --no-sandbox chrome options аргумента достаточно

Maksim Kostromin 05.03.2020 07:53

вам необходимо сопоставить версии хромированной отвертки, которую вы используете с хромом

tarvinder91 02.10.2020 19:59

Также запуск chrome с пользователем без полномочий root очень важен для chromedriver для успешного запуска процесса chrome.

Jinlxz Liu 27.10.2020 11:56

Добавление только --headless в качестве опции к хромированному драйверу у меня сработало.

FLBKernel 15.07.2021 17:28

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

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 не смог инициировать / создать новый Веб-браузер, то есть сеанс Браузер Chrome.

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

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

Chrome_binary_expected_location

1 Для систем Linux ChromeDriver ожидает, что /usr/bin/google-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"    #chrome binary location specified here
    options.add_argument("--start-maximized") #open Browser in maximized mode
    options.add_argument("--no-sandbox") #bypass OS security model
    options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    
  • Джава Решение:

    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions opt = new ChromeOptions();
    opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  //chrome binary location specified here
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.com/");
    

Настройка бинарного файла Chrome сработала. Дала вам лучший ответ. Также полное удаление Chrome / Chromedriver / Pycharm с последующей переустановкой всего тоже помогло, так что теперь у меня не будет установленного двоичного файла chrome.

SOeh 31.10.2018 19:02

selenium.common.exceptions.WebDriverException: сообщение: неизвестная ошибка: не удалось запустить Chrome: был убит. (неизвестная ошибка: файл DevToolsActivePort не существует) Сейчас я получаю это (killed) вместо crashed. Я искал в Интернете более 3 часов, и, похоже, ничего не работает

MasterMind 19.07.2021 06:15

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

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

Я столкнулся с точной проблемой, связанной с контейнером докеров (в среде сборки). После 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, поэтому он не мог создать хром.

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

Другой способ исправить это - не запускать процесс (внутри контейнера) от имени пользователя root. В любом случае это лучше с точки зрения безопасности. :)

XtraSimplicity 15.10.2019 01:27

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

opts.set_headless(True)

надеюсь, это кому-то поможет. это сработало для меня на 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()

У меня была аналогичная проблема, и я обнаружил, что аргументы опции должны быть в определенном порядке. Мне известны только два аргумента, которые потребовались для того, чтобы это работало на моей машине с 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/')

Разве использование параметра --no - sandbox не является проблемой безопасности?

Mahak Malik 14.02.2020 19:26

Эта ошибка возникала случайным образом во время моих тестовых прогонов в течение последних шести месяцев (все еще происходит с 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)

Я вижу эту ошибку с selenium==4.0.0.b1selenium==4.0.0.a7 работает нормально, только в linux, windows нормально.

MortenB 12.03.2021 10:38
capabilities не определяется
aL_eX 02.06.2021 14:08

Для 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

Я также столкнулся с той же проблемой, но был немного смущен вашим комментарием выше. не могли бы вы помочь. мой текущий код - SeleniumLibrary.Open Browser about: blank $ {BROWSER} .. поэтому я заменяю эту строку вашими операторами?

Mahak Malik 11.02.2020 15:39

у меня была такая же проблема. Я запускал его на терминале с «sudo geany», вы должны запускать его без «sudo», просто введите на терминале «geany», и это решено для меня.

Простое решение, о котором никто не сказал, но сработало для меня, не работало без sudo или без root.

Убедитесь, что исполняемый файл chromedriver и google-chrome имеет права на выполнение.

sudo chmod -x "/usr/bin/chromedriver"

sudo chmod -x "/usr/bin/google-chrome"

sudo chmod + x "/ usr / bin / chromedriver" sudo chmod + x "/ usr / bin / google-chrome"

Atif Hussain 03.09.2021 17:19

Я столкнулся с этой ошибкой в ​​среде Linux. Если вы не используете Headless, вам понадобится

from sys import platform
    if platform != 'win32':
        from pyvirtualdisplay import Display
        display = Display(visible=0, size=(800, 600))
        display.start()

Я столкнулся с той же проблемой, но решил ее, переместив хромированную отвертку на этот путь '/ opt / google / chrome /'

и этот код работает правильно

from selenium.webdriver import Chrome
driver = Chrome('/opt/google/chrome/chromedrive')
driver.get('https://google.com')

Решения, которые предлагает здесь каждый, хороши для устранения проблемы, но

Все, что вам нужно для решения этой проблемы, - это запустить приложение для пользователя некорневой. на linux.

According to this post

https://github.com/paralelo14/google_explorer/issues/2#issuecomment-246476321

В моем случае хром был сломан. следующие две строки исправили проблему,

apt -y update; apt -y upgrade; apt -y dist-upgrade
apt --fix-broken install

Столкнулся с этой проблемой при попытке запустить / отладить сценарий Python Selenium внутри WSL2 с помощью отладчика Pycharm. Первым решением было использование режима --headless, но я предпочитаю иметь графический интерфейс Chrome во время процесса отладки.

В системном терминале за пределами отладчика Pycharm GUI Chrome отлично работал с переменной env DISPLAY, установленной таким образом (следуя руководству здесь):

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0

К сожалению, ~/.bashrc не работает в Pycharm во время отладки, экспорт не работает.

То, как у меня работает графический интерфейс Chrome из отладчика Pycharm: запустите echo $DISPLAY в WSL2, вставьте ip (у вас есть что-то похожее) 172.18.144.1:0 в Pycharm Debug Configuration> Environment Variables:

Найдено аналогичное решение в вопросе клонирования, это также может помочь stackoverflow.com/a/57403093/6875391

klapshin 29.05.2021 18:14

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