无法在无头模式下启动 Chrome
Unable start Chrome in headless mode
使用 Windows 子系统 WSL2。我正在尝试在 Ubuntu 20.04.
中打开浏览器
按照命令安装 google chrome 和 chrome-driver
https://tecadmin.net/setup-selenium-chromedriver-on-ubuntu/
通过终端启动 chrome 时遇到问题。也无法初始化浏览器。
版本:
- Windows 10
- Ubuntu 20.04
- Google Chrome 102.0.5005.61
- Chrome驱动程序 102.0.5005.61
- selenium-webdriver (4.1.0)
- watir (7.1.0)
当我尝试通过终端打开 google-chrome 时。
$google-chrome
Error: [0530/135205.172753:ERROR:exception_handler_server.cc(361)] getsockopt: Invalid argument (22)
$sudo update-alternatives --config x-www-browser
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/google-chrome-stable 200 auto mode
1 /usr/bin/chromium-browser 40 manual mode
2 /usr/bin/google-chrome-stable 200 manual mode
3 /usr/bin/wslview 30 manual mode
我也尝试在 IRB 中初始化浏览器。
require 'watir'
browser = Watir::Browser.new(:chrome)
Error: Net::ReadTimeout
也尝试重新安装子系统。仍然面临同样的问题。
几个可能的问题:
首先,您提到您使用的是 WSL2,但是您收到的 Chrome 错误让我相信您可能使用的是 WSL1。如果我在 WSL1 上 运行 google-chrome
但在 WSL2 上看不到,我会看到同样的错误。
Double-check 即 wsl.exe -l -v
。您可能需要使用 wsl --set-version <distro> 2
.
将实例转换为 WSL2
其次,运行宁google-chrome
那样,即使在WSL2上,也需要X服务器。 Windows 10 中的 WSL 不支持 GUI 应用程序,因此您需要在 Windows 中安装和配置 X 服务器。您会找到关于该主题的其他问题和答案,所以我不会在这里花太多时间,因为您真正的问题是关于 运行ning Chrome headless.
只要你是运行宁 WSL2 你应该能够 运行 Chrome 与 Watir 无头。看起来您缺少的主要内容是没有使用 headless: true
选项调用 Watir for Chrome per this doc.
以下是我对 Watir 和 Chromedriver 采取的步骤。请注意,第一行是您链接到的方向的固定版本,因为它需要 sudo apt-key add
而不是 sudo curl
:
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add
sudo bash -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list"
sudo apt update
sudo apt install -y google-chrome-stable
google-chrome --version # To check the Chromedriver version to download
cd ~
wget https://chromedriver.storage.googleapis.com/102.0.5005.61/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
mv chromedriver ~/.local/bin # A directory on your path
gem install --user-install watir
irb
在 irb 中:
require 'watir'
browser = Watir::Browser.new :chrome, headless: true
browser.goto 'https://whosebug.com/q/72432711/11810933'
puts browser.title
这里returns你的问题的标题。
也可以使用 headless
包,如 this page 所述。
添加以下内容:
sudo apt install xvfb
gem install --user-install headless
然后在 irb:
require 'watir'
require 'headless'
headless = Headless.new
headless.start
browser = Watir::Browser.new(:chrome)
browser.goto 'https://whosebug.com/q/72432711/11810933'
puts browser.title
headless.destroy
使用 Windows 子系统 WSL2。我正在尝试在 Ubuntu 20.04.
中打开浏览器按照命令安装 google chrome 和 chrome-driver
https://tecadmin.net/setup-selenium-chromedriver-on-ubuntu/
通过终端启动 chrome 时遇到问题。也无法初始化浏览器。
版本:
- Windows 10
- Ubuntu 20.04
- Google Chrome 102.0.5005.61
- Chrome驱动程序 102.0.5005.61
- selenium-webdriver (4.1.0)
- watir (7.1.0)
当我尝试通过终端打开 google-chrome 时。
$google-chrome
Error: [0530/135205.172753:ERROR:exception_handler_server.cc(361)] getsockopt: Invalid argument (22)
$sudo update-alternatives --config x-www-browser
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/google-chrome-stable 200 auto mode
1 /usr/bin/chromium-browser 40 manual mode
2 /usr/bin/google-chrome-stable 200 manual mode
3 /usr/bin/wslview 30 manual mode
我也尝试在 IRB 中初始化浏览器。
require 'watir'
browser = Watir::Browser.new(:chrome)
Error: Net::ReadTimeout
也尝试重新安装子系统。仍然面临同样的问题。
几个可能的问题:
首先,您提到您使用的是 WSL2,但是您收到的 Chrome 错误让我相信您可能使用的是 WSL1。如果我在 WSL1 上 运行
google-chrome
但在 WSL2 上看不到,我会看到同样的错误。Double-check 即
将实例转换为 WSL2wsl.exe -l -v
。您可能需要使用wsl --set-version <distro> 2
.其次,运行宁
google-chrome
那样,即使在WSL2上,也需要X服务器。 Windows 10 中的 WSL 不支持 GUI 应用程序,因此您需要在 Windows 中安装和配置 X 服务器。您会找到关于该主题的其他问题和答案,所以我不会在这里花太多时间,因为您真正的问题是关于 运行ning Chrome headless.只要你是运行宁 WSL2 你应该能够 运行 Chrome 与 Watir 无头。看起来您缺少的主要内容是没有使用
headless: true
选项调用 Watir for Chrome per this doc.以下是我对 Watir 和 Chromedriver 采取的步骤。请注意,第一行是您链接到的方向的固定版本,因为它需要
sudo apt-key add
而不是sudo curl
:curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add sudo bash -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" sudo apt update sudo apt install -y google-chrome-stable google-chrome --version # To check the Chromedriver version to download cd ~ wget https://chromedriver.storage.googleapis.com/102.0.5005.61/chromedriver_linux64.zip unzip chromedriver_linux64.zip mv chromedriver ~/.local/bin # A directory on your path gem install --user-install watir irb
在 irb 中:
require 'watir' browser = Watir::Browser.new :chrome, headless: true browser.goto 'https://whosebug.com/q/72432711/11810933' puts browser.title
这里returns你的问题的标题。
也可以使用
headless
包,如 this page 所述。添加以下内容:
sudo apt install xvfb gem install --user-install headless
然后在 irb:
require 'watir' require 'headless' headless = Headless.new headless.start browser = Watir::Browser.new(:chrome) browser.goto 'https://whosebug.com/q/72432711/11810933' puts browser.title headless.destroy