16

我正在尝试使用 python 3 从 WSL2 (Ubuntu 18.04) 无头打开 Chrome。

在 Windows 上,我使用的是 Chrome 84。我从ChromeDriver - WebDriver for Chrome下载了 Chrome 驱动程序 84 。并在 C:\ChromeDriver\chromedriver.exe 下安装了 .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

两个 Chrome 都设置为可由 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://stackoverflow.com')

它失败并出现错误:

raise WebDriverException("Can not connect to the Service %s" % self.path) selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver (* OR /usr/bin/chromedriver OR /mnt/c/ ChromeDriver/chromedriver.exe 取决于我如何启动 webdriver.Chrome())

如何能够使用 python3 和 selenium 从 WSL2 启动 Chrome 驱动程序?

4

3 回答 3

4

对于那些尚未找到解决方案的人。按照这个教程:WSL2 中的 chromedriver 很多都是相似的,但是对我来说诀窍是将 chromedriver 放在相应的组和用户中:

sudo chown root:root /usr/bin/chromedriver
于 2021-01-09T14:03:01.137 回答
1

您可以通过给定的代码安装 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

如果你没有使用给定的代码,你确实需要 chrome。

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

获得 selenium 和 chrome 驱动程序后,您可以将给定的代码用于无头 chrome。此外,还有一个名为“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 中放置必要的参数。

于 2020-12-10T18:41:55.280 回答
0

我不认为这是可能的。你在这里是在 Linux 下,所以你不能使用 Windows 可执行文件。

我尝试使用无头版本的 Chromium,但它不起作用,因为(似乎)Q

于 2020-09-16T20:41:23.163 回答