Как запустить Selenium ChromeDriver из python3 на wsl2?

Я пытаюсь открыть Chrome без головы из WSL2 (Ubuntu 18.04) с помощью python 3.

В Windows я использую Chrome 84. Я скачал драйвер Chrome 84 из ChromeDriver - WebDriver для Chrome. И установил.exe под C:\ChromeDriver\chromedriver.exe

Я установил символическую ссылку из моего Windows Chrome и ChromeDriver на WSL2:

sudo ln -s '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe' /usr/bin/google-chrome
sudo ln -s /mnt/c/ChromeDriver/chromedriver.exe /usr/bin/chromedriver

Оба Chromes могут быть выполнены любым пользователем WSL2.

На WSL2, когда я вхожу в консоль:

google-chrome --use-gl=swiftshader

Chrome запускается в Windows.

Вот мой сценарий:

from selenium import webdriver
browser = webdriver.Chrome()    # fails
# browser = webdriver.Chrome('/usr/bin/chromedriver') fails
# browser = webdriver.Chrome('/mnt/c/ChromeDriver/chromedriver.exe') fails
browser.get('https://stackru.com')

Не получается с ошибкой:

поднять исключение WebDriverException("Не удается подключиться к службе%s" % self.path) selenium.common.exceptions.WebDriverException: сообщение: не удается подключиться к службе chromedriver (* ИЛИ /usr/bin/chromedriver ИЛИ /mnt/c/ChromeDriver/chromedriver.exe в зависимости от того, как я запускаю webdriver.Chrome())

Как запустить драйвер Chrome из WSL2, используя python3 и селен?

4 ответа

Для тех, кто еще не нашел решение. Следуйте этому руководству: chromedriver в WSL2. Многие похожи, но для меня хитрость заключалась в том, чтобы поместить chromedriver в соответствующую группу и пользователя:

      sudo chown root:root /usr/bin/chromedriver

вы можете установить chromedrive по данному коду.

      wget -N http://chromedriver.storage.googleapis.com/2.26/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
sudo mv -f chromedriver /usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

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

      wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update 
sudo apt-get install google-chrome-stable

Я мог что-то упустить, поэтому, пожалуйста, посмотрите справочный сайт. ссылка: https://www.srcmake.com/home/selenium-python-chromedriver-ubuntu

После того, как вы получите драйвер селена и хрома, вы можете использовать данный код для безголового хрома. Кроме того, есть один пакет с именем «chromedriver_autoinstaller». Я не уверен, работает ли он на Ubuntu или нет, но это отличный пакет, если вы используете один и тот же скрипт каждый день, а ваш браузер находится в режиме автоматического обновления.

код для безголового хрома:

      #for headless browser use this arguments
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(chrome_options=chrome_options)

поместите необходимые аргументы в webdriver.Chrome, если вы используете путь и другие условия.

https://www.selenium.dev/documentation/grid/getting_started/

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

В окнах:

  1. установите драйвер и настройте путь
  2. установите установленную версию java11 или выше
  3. установить селен-сервер

В wsl2-Ubuntu20.04:

  1. pip установить селен

Я не думаю, что это возможно. Здесь вы находитесь под Linux, поэтому вы не можете использовать исполняемый файл Windows.

Я пробовал использовать версию Chromium без головы, но это не сработало, потому что (кажется) Q

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