如何在 wsl2 上从 python3 运行 Selenium ChromeDriver?

新手上路,请多包涵

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

在 Windows 上,我使用的是 Chrome 84。我已经从 ChromeDriver - WebDriver for Chrome 下载了 Chrome Driver 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: 消息:无法连接到服务 chromedriver (* OR /usr/bin/chromedriver OR /mnt/c/ ChromeDriver/chromedriver.exe 取决于我如何启动 webdriver.Chrome())

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

原文由 Ñhosko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答

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

 sudo chown root:root /usr/bin/chromedriver

原文由 Ruben Santana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进