Недавно я сменил компьютер и с тех пор не могу запустить хром с селеном. Я также пробовал 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)
Попробуйте скачать ЗДЕСЬ и используйте последнюю версию драйвера 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 попробуйте отредактированное решение
Я думаю, что это для docker env.
Я попробовал этот метод, добавив 3 аргумента, и, похоже, все работает нормально.
Убедитесь, что опция --no-sandbox
является первой (в отличие от этого примера, где первая опция - --headless
. Я продолжал получать эту ошибку, пока я не переместил --no-sandbox
в верхнюю часть списка, добавив его в качестве первого варианта.
Примечание: from selenium.webdriver.chrome.options import Options
насколько я знаю --no-sandbox
chrome options аргумента достаточно
вам необходимо сопоставить версии хромированной отвертки, которую вы используете с хромом
Также запуск chrome с пользователем без полномочий root очень важен для chromedriver для успешного запуска процесса chrome.
Добавление только --headless
в качестве опции к хромированному драйверу у меня сработало.
Это сообщение об ошибке ...
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, ожидает, что у вас будет установлен Хром в местоположение по умолчанию для каждой системы, как показано на изображении ниже:
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.
selenium.common.exceptions.WebDriverException: сообщение: неизвестная ошибка: не удалось запустить Chrome: был убит. (неизвестная ошибка: файл DevToolsActivePort не существует) Сейчас я получаю это (killed
) вместо crashed
. Я искал в Интернете более 3 часов, и, похоже, ничего не работает
Предполагая, что вы уже загрузили 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. В любом случае это лучше с точки зрения безопасности. :)
в моем случае ошибка была связана с пользователем 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 не является проблемой безопасности?
Эта ошибка возникала случайным образом во время моих тестовых прогонов в течение последних шести месяцев (все еще происходит с 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.b1
selenium==4.0.0.a7
работает нормально, только в linux, windows нормально.
capabilities
не определяется
Для 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} .. поэтому я заменяю эту строку вашими операторами?
у меня была такая же проблема. Я запускал его на терминале с «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"
Я столкнулся с этой ошибкой в среде 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
Я уже скачал последнюю версию хромированного драйвера с этого места.