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 будет установлен в расположение по умолчанию для каждой системы, как показано на рисунке ниже:
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:
Ответ 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