【问题标题】:How to implement chromedriver in selenium in Linux platform如何在 Linux 平台的 selenium 中实现 chromedriver
【发布时间】:2013-09-07 14:02:27
【问题描述】:

谁能告诉我如何在 Selenium for Linux 平台中使用 Chrome 驱动程序?

我的 chrome 驱动程序位于 username/home/chromedriver

我的代码是:

System.setProperty("webdriver.chrome.driver", "/home/username/ChromeDriver/chrome‌​driver");
driver = new ChromeDriver();
driver.get("facebook.com");

我得到的错误是:

org.openqa.selenium.WebDriverException: 无法启动或 连接到 Chrome。请检查 ChromeDriver 是否是最新的。

/opt/google/chrome/google-chrome 使用 Chrome 二进制文件

(警告:服务器未提供任何堆栈跟踪信息)

【问题讨论】:

  • Chrome 驱动程序 (username/home/chromedriver) 的位置与您的配置 (/home/username/ChromeDriver/chrome‌​driver) 不匹配。确保在每个位置使用正确的路径。除此之外,一切都应该没问题,这也是我初始化 Chrome 的方式。再次尝试重新下载所有部分。不要忘记解压 chromedriver 包。

标签: selenium webdriver selenium-webdriver


【解决方案1】:

来自[官方文档](https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver:

要求

ChromeDriver 使用 Chrome 的自动化代理控制浏览器 框架。

服务器希望您默认安装 Chrome 每个系统的位置:

OS          Expected Location of Chrome
-------------------------------------
Linux          /usr/bin/google-chrome
Mac            /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
Windows XP     %HOMEPATH%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
Windows Vista  C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application\chrome.exe

对于 Linux 系统,ChromeDriver 期望 /usr/bin/google-chrome 成为实际 Chrome 二进制文件的符号链接。另请参阅overriding the Chrome binary location 部分。

开始

要进行设置,首先 download 适当的预建服务器。确保服务器可以位于 您的 PATH 或通过 webdriver.chrome.driver 指定其位置 系统属性。最后,您需要做的就是创建一个新的 ChromeDriver 实例:

WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");

因此,download the version of chromedriver you need,将其解压缩到您的 PATH 上(或通过系统属性指定路径),然后运行驱动程序。

【讨论】:

  • 嗨,我的 chrome 驱动程序位置在“username/home/chromedriver”。所以,我有我的代码
  • System.setProperty("webdriver.chrome.driver","/home/username/ChromeDriver/chromedriver");driver = new ChromeDriver(); driver.get("facebook.com"); 得到的错误是,org.openqa.selenium.WebDriverException: 无法启动或连接到 Chrome。请检查 ChromeDriver 是否是最新的。在以下位置使用 Chrome 二进制文件:/ opt/google/chrome/google-chrome(警告:服务器未提供任何堆栈跟踪信息)
  • 它链接到的文档页面不包含任何信息
  • “入门”部分中的下载链接不再起作用。
  • @AaronLelevier 谢谢,我修复了链接。
【解决方案2】:

我们已经安装成功

sudo apt-get install unzip
wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip -P ~/Downloads
unzip ~/Downloads/chromedriver_linux64.zip -d ~/Downloads
chmod +x ~/Downloads/chromedriver
sudo mv -f ~/Downloads/chromedriver /usr/local/share/chromedriver
Change the directory to /usr/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

现在运行脚本并在环境文件中添加以下内容。

Capybara.register_driver :chrome do |app| client = Selenium::WebDriver::Remote::Http::Default.new Capybara::Selenium::Driver.new(app, :browser => :chrome, :http_client => client) end

Capybara.javascript_driver = :chrome

注意:根据您的操作系统类型(如 32 位或 64 位)更改 chrome 驱动程序版本。

【讨论】:

  • 在“chmod -x ...”之后,你可以这样做:“sudo mv -f ~/Downloads/chromedriver /usr/local/bin”
  • 这些说明现在已经很老了,chrome驱动程序版本已经改变了很多次。确保您的 Chrome 浏览器版本与驱动程序版本匹配。
【解决方案3】:

对我来说,使用这些命令:

  1. 解压文件 -> 解压 -q chromedriver_linux64.zip
  2. 强制复制到目录'usr/bin' -> sudo mv -f chromedriver /usr/bin

硒代码是这样的。


System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");

WebDriver driver = new ChromeDriver();

driver.get("https://mvnrepository.com");

driver.close();

【讨论】:

  • 感谢您提供这个简单而中肯的解决方案。通过这种方式,我能够解决我的“chromedriver 需要在路径中...”错误。
【解决方案4】:

这是一个用于 Linux 18.04 的完整脚本,用于安装 Google Chrome 和 chrome 驱动程序。它应该会自动调整以收集浏览器的正确 chrome 驱动程序。

#!/usr/bin/env bash
# install the latest version of Chrome and the Chrome Driver
apt-get update && apt-get install -y libnss3-dev
version=$(curl http://chromedriver.storage.googleapis.com/LATEST_RELEASE)
wget -N http://chromedriver.storage.googleapis.com/${version}/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /usr/local/bin
chmod +x /usr/local/bin/chromedriver
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install

【讨论】:

  • 在执行最后一条语句时,它显示Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?,即使我已授予 sudo 权限。
  • 我怀疑这是因为您已经在其他地方运行了 dpkg 或 apt。
  • 不。 tt 事实并非如此。重新检查.. 在这一行之后我得到了那个错误Processing triggers for man-db (2.8.3-2ubuntu0.1) ... E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
【解决方案5】:

你可以从this example看小例子

对于 linux,我下载了 chrome 驱动程序并保留为系统路径变量(或放入现有路径文件夹)。从代码中我使用以下方式(添加属性并使用 chrome 驱动程序的路径启动)

System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver");
ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File("/usr/local/bin/chromedriver"))
                .usingAnyFreePort()
                .build();
        try {
            service.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 2021-03-15
    • 2023-02-07
    • 1970-01-01
    • 2020-06-27
    • 2014-10-07
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多