Как запустить 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/
Вы можете использовать сетку для решения этой проблемы
В окнах:
- установите драйвер и настройте путь
- установите установленную версию java11 или выше
- установить селен-сервер
В wsl2-Ubuntu20.04:
- pip установить селен
Я не думаю, что это возможно. Здесь вы находитесь под Linux, поэтому вы не можете использовать исполняемый файл Windows.
Я пробовал использовать версию Chromium без головы, но это не сработало, потому что (кажется) Q