如何在Chrome中运行Selenium WebDriver测试用例?


160

我试过了

WebDriver driver = new ChromeDriver();

但我得到的错误

测试失败:setUp(com.TEST):必须通过webdriver.chrome.driver系统属性设置驱动程序可执行文件的路径;否则,请执行以下操作:有关更多信息,请参见此处的代码。可以从链接下载最新版本

如何使Chrome浏览器测试Selenium-WebDriver测试用例?


如果可以告诉您,在运行selenium-java之前,是否已从code.google.com/p/chromedriver/downloads/list下载了selenium chrome驱动程序,并将其添加到eclipse中的“ Add External Jars”下的库中,将很有帮助。码。
Hemanth

Answers:


252

您需要从以下位置下载可执行驱动程序: ChromeDriver下载

然后,您要做的就是在创建驱动程序对象之前使用以下命令(已经以正确的顺序显示):

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

摘录自ChromeDriver文档中最有用的指南。


@aimbire:嘿,我面临着同样的问题。我做了您建议的相同操作,但收到此错误。“ java.lang.IllegalStateException:驱动程序可执行文件不存在:D:\ selenimPRJarg1 \ chromedriver.exe”我缺少什么吗?“
kTiwari 2014年

您必须从docs.seleniumhq.org/download下载Selenium Standalone Server ,并将jar文件作为依赖项添加到Java项目。
dikirill

4
您在哪里使用/输入?System.setProperty(“ webdriver.chrome.driver”,“ / path / to / chromedriver”); WebDriver驱动程序=新的C​​hromeDriver();
tijnn 2015年

1
我已经探索了这个问题的所有答案,只有这个答案对我有用。(y)
布袋

尽管从技术上讲这是正确的,但您实际上不应该在代码中设置该环境变量,这与在代码中硬编码路径相同。应该在运行代码的计算机上设置环境变量,以允许每台计算机将chrome驱动程序可执行文件存储在一个唯一的位置,但一切仍能正常进行。
Ardesco

21

从铬驱动下载更新版本的Chrome驱动程序 请参阅发行文件以及这里 如果Chrome浏览器,然后更新您需要下载新的chormedriver从上面的链接,因为这将是紧凑的,能以新的浏览器版本。

 public class chrome 
 {

  public static void main(String[] args) {

       System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
       WebDriver driver = new ChromeDriver();


    driver.get("http://www.google.com");

  }

 }

3
现在,这是一个麻烦的解决方案。如果您现在使用的是这种方法,建议您更改此方法。
aimbire

1
现在下载链接已过期。
Gone Coding

此代码在Google Chrome版本69.0.3497.100(正式版)(64位)中不起作用。请兄弟建议新的密码。到目前为止它是在旧版本的工作低于65.0.0版本
Mitesh Thakery

18

您应该将chromeDriver下载到一个文件夹中,然后将此文件夹添加到PATH变量中。您必须重新启动控制台才能使其正常运行。


8

如果您在MacOS上使用自制软件,则可以使用以下命令:

(编辑)brew tap homebrew/cask && brew cask install chromedriver

在此之后,无需其他配置即可正常工作。


2
到现在为止brew tap homebrew/cask && brew cask install chromedriver
luk2302

6

您需要安装chrome驱动程序。您可以使用nugget安装此软件包,如下所示


1
这可能是一个,但NuGet的版本太旧了:2014年10月13日的2.10.0版本
Tiago Freitas Leal

3月23日再次过时。无法在最新的Chrome上使用。
威廉

6

您可以使用以下代码通过Selenium网络驱动程序在Chrome中运行测试用例:

import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ChromeTest {

    /**
     * @param args
     * @throws InterruptedException
     * @throws IOException 
     */
    public static void main(String[] args) throws InterruptedException, IOException {
        // Telling the system where to find the Chrome driver
        System.setProperty(
                "webdriver.chrome.driver",
                "E:/chromedriver_win32/chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

        // Open google.com
        webDriver.navigate().to("http://www.google.com");

        String html = webDriver.getPageSource();

        // Printing result here.
        System.out.println(html);

        webDriver.close();
        webDriver.quit();
    }
}

5

chromedriver 此处找到最新版本。下载完成后,将其解压缩到python安装的根目录下C:/Program Files/Python-3.5,仅此而已。您甚至不需要在任何地方指定路径和/或添加chromedriver到路径等中。我只是在一个干净的Python安装上完成的,并且有效。


4
坏建议...不要污染您的python安装
Corey Goldberg

另外,OP从未指定Python
Corey Goldberg

4

下载最新版的chrome驱动程序,并使用以下代码:

System.setProperty("webdriver.chrome.driver", " path of chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(10000);
driver.get("http://stackoverflow.com");

1

在Ubuntu上,您可以简单地安装chromium-chromedriver软件包:

apt install chromium-chromedriver

请注意,这还会安装过时的硒版本。要安装最新的硒:

pip install selenium

0

上面的所有答案都是正确的,以下是对该问题和解决方案的深入探讨。

例如selenium中的驱动程序构造函数

WebDriver driver = new ChromeDriver();

搜索驱动程序可执行文件,在这种情况下chrome驱动程序搜索chrome驱动程序可执行文件,如果服务无法找到可执行文件,则会引发异常

这是异常的来源(请注意检查状态方法)

 /**
   *
   * @param exeName Name of the executable file to look for in PATH
   * @param exeProperty Name of a system property that specifies the path to the executable file
   * @param exeDocs The link to the driver documentation page
   * @param exeDownload The link to the driver download page
   *
   * @return The driver executable as a {@link File} object
   * @throws IllegalStateException If the executable not found or cannot be executed
   */
  protected static File findExecutable(
      String exeName,
      String exeProperty,
      String exeDocs,
      String exeDownload) {
    String defaultPath = new ExecutableFinder().find(exeName);
    String exePath = System.getProperty(exeProperty, defaultPath);
    checkState(exePath != null,
        "The path to the driver executable must be set by the %s system property;"
            + " for more information, see %s. "
            + "The latest version can be downloaded from %s",
            exeProperty, exeDocs, exeDownload);

    File exe = new File(exePath);
    checkExecutable(exe);
    return exe;
  }

以下是引发异常的检查状态方法

  /**
   * Ensures the truth of an expression involving the state of the calling instance, but not
   * involving any parameters to the calling method.
   *
   * <p>See {@link #checkState(boolean, String, Object...)} for details.
   */
  public static void checkState(
      boolean b,
      @Nullable String errorMessageTemplate,
      @Nullable Object p1,
      @Nullable Object p2,
      @Nullable Object p3) {
    if (!b) {
      throw new IllegalStateException(format(errorMessageTemplate, p1, p2, p3));
    }
  }

解决方案:在创建驱动程序对象之前,设置系统属性,如下所示

System.setProperty("webdriver.gecko.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();

以下是驱动程序服务搜索驱动程序可执行文件的代码段(适用于chrome和firefox):

铬:

   @Override
    protected File findDefaultExecutable() {
      return findExecutable("chromedriver", CHROME_DRIVER_EXE_PROPERTY,
          "https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver",
          "http://chromedriver.storage.googleapis.com/index.html");
    }

火狐:

@Override
 protected File findDefaultExecutable() {
      return findExecutable(
        "geckodriver", GECKO_DRIVER_EXE_PROPERTY,
        "https://github.com/mozilla/geckodriver",
        "https://github.com/mozilla/geckodriver/releases");
    }

其中CHROME_DRIVER_EXE_PROPERTY =“ webdriver.chrome.driver”和GECKO_DRIVER_EXE_PROPERTY =“ webdriver.gecko.driver”

其他浏览器也是如此,以下是可用浏览器实现列表的快照

在此处输入图片说明


0
To run Selenium WebDriver test cases in Chrome, follow these steps:


first of all set the property & chrome driver path

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
then initialize the Chrome Driver's object

WebDriver driver = new ChromeDriver();
then pass the url into get method of WebDriver

driver.get("http://www.google.com");

0

我将二进制文件包含在我的项目资源目录中,如下所示:

src\main\resources\chrome\chromedriver_win32.zip
src\main\resources\chrome\chromedriver_mac64.zip
src\main\resources\chrome\chromedriver_linux64.zip

码:

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.SystemUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.*;
import java.nio.file.Files;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public WebDriver getWebDriver() throws IOException {
    File tempDir = Files.createTempDirectory("chromedriver").toFile();
    tempDir.deleteOnExit();
    File chromeDriverExecutable;

    final String zipResource;
    if (SystemUtils.IS_OS_WINDOWS) {
        zipResource = "chromedriver_win32.zip";
    } else if (SystemUtils.IS_OS_LINUX) {
        zipResource = "chromedriver_linux64.zip";
    } else if (SystemUtils.IS_OS_MAC) {
        zipResource = "chrome/chromedriver_mac64.zip";
    } else {
        throw new RuntimeException("Unsuppoerted OS");
    }

    try (InputStream is = getClass().getResourceAsStream("/chrome/" + zipResource)) {
        try (ZipInputStream zis = new ZipInputStream(is)) {
            ZipEntry entry;
            entry = zis.getNextEntry();
            chromeDriverExecutable = new File(tempDir, entry.getName());
            chromeDriverExecutable.deleteOnExit();
            try (OutputStream out = new FileOutputStream(chromeDriverExecutable)) {
                IOUtils.copy(zis, out);
            }
        }
    }

    System.setProperty("webdriver.chrome.driver", chromeDriverExecutable.getAbsolutePath());
    return new ChromeDriver();
}

-2

下载chromedriver的exe并将其解压缩到当前项目位置。在此处的链接中,我们可以在其中下载最新版本的chromedriver。

https://sites.google.com/a/chromium.org/chromedriver/

这里是启动浏览器的简单代码,并导航到url。

System.setProperty("webdriver.chrome.driver", "path of chromedriver.exe");

WebDriver driver = new ChromeDriver();

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

下载chromedriver并将其解压缩。接下来,在您的项目中创建一个文件夹,并将其命名为chromedriver,并将.exe文件保留在其中。并使用此路径。这是简单的代码示例。'code'System.setProperty(“ webdriver.chrome.driver”,System.getProperty(“ user.dir”)+“ \\ chromedriver \\ chromedriver.exe”); WebDriver驱动程序=新的C​​hromeDriver(); driver.get(“ google.co.in”); WebElement searchbox = driver.findElement(By.name(“ q”)); searchbox.sendKeys(“最佳免费硒视频教程”);searchbox.submit();
vinay 2015年

请考虑用其他信息vinay更新此答案。
里卡多·索扎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.