我正在进行我的项目,需要按下Selenium的按钮。但当我启动它时,它会给我这个错误
/home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service_manager.rb:139:in `connect_until_stable': unable to connect to /usr/bin/chromedriver 127.0.0.1:9515 (Selenium::WebDriver::Error::WebDriverError)
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service_manager.rb:57:in `block in start'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/socket_lock.rb:41:in `locked'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service_manager.rb:54:in `start'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:84:in `launch'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:374:in `service_url'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:311:in `create_bridge'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:74:in `initialize'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `new'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `for'
from /home/yarikhrom/.rvm/gems/ruby-3.0.2/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver.rb:88:in `for'
from test.rb:3:in `<main>'
代码:
require 'selenium-webdriver'
driver = Selenium::WebDriver.for:chrome
driver.get "https://www.google.com/"
driver.find_element(:xpath, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[2]').click
我该怎么解决这个问题?我发现谷歌依赖性可能有一些问题,但我显然不知道如何更改
我这边有两点。
首先,检查chromedriver.exe
是否存在于c:ruby30bin
中。如果你使用其他版本的ruby,那么你会相应地找到ruby,比如ruby26ruby 27等。
你看起来像是在使用Linux操作系统,嗯?如果是,请检查chromedriver.exe
是否在正确的路径上。
第二关,
driver.find_element(:xpath, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[2]').click
这是老式的,现在不行了。
使用此代码
driver.find_element(xpath: '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[2]').click
我在设置WSL2时也遇到了类似的错误。通过在powershell中运行wsl --update
更新到WSL的最新版本修复了此问题。
我使用的是Linux Chrome和Chromedriver,而不是Windows。我的发行版是Ubuntu 20.04。为了安装这些,我做了以下操作:
安装Chrome
sudo apt install fonts-liberation libappindicator3-1 libasound2 libgbm1 libnspr4 libnss3 libxss1 xdg-utils
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
echo 'alias chrome="google-chrome-stable"' >> ~/.bashrc
exec $SHELL
安装Chromedriver
sudo apt-get update
sudo apt-get install chromium-chromedriver