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

How to run Selenium WebDriver test cases in Chrome?

我试过这个

1
WebDriver driver = new ChromeDriver();

但我得到的错误是

Failed tests: setUp(com.TEST): The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see code here . The latest version can be downloaded from Link

如何让Chrome测试Selenium-WebDriver测试用例?


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

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

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

这是从ChromeDriver文档中最有用的指南中提取的。


从Chrome驱动程序下载Chrome驱动程序的更新版本
请阅读发行说明以及此处
如果Chrome浏览器已更新,那么您需要从上面的链接下载新的chormedriver,因为它可以使用新的浏览器版本进行压缩。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 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");

  }

 }


您应该在文件夹中下载chromeDriver,并在PATH变量中添加此文件夹。
您必须重新启动控制台才能使其正常工作。


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

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

没有其他配置之后它应该可以正常工作。


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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();
    }
}

在这里找到最新版本的chromedriver
下载后,将其解压缩到python安装的根目录,例如C:/Program Files/Python-3.5,就是这样。
您甚至不需要在任何地方指定路径和/或将chromedriver添加到路径等。
我只是在一个干净的Python安装上做到了这一点。


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

>
</p>
<div class=


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

1
2
3
4
5
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");

在Ubuntu上,您只需安装chromium-chromedriver包:

1
apt install chromium-chromedriver

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

1
pip install selenium

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

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

1
WebDriver driver = new ChromeDriver();

搜索驱动程序可执行文件,在这种情况下,chrome驱动程序搜索chrome驱动程序可执行文件,以防服务无法找到可执行文件时抛出异常

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 /**
   *
   * @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;
  }

以下是检查状态方法,它抛出异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  /**
   * 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));
    }
  }

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

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

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

铬:

1
2
3
4
5
6
   @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");
    }

火狐:

1
2
3
4
5
6
7
@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"

类似于其他浏览器的情况,以下是可用浏览器实现列表的快照

enter image description here


下载chromedriver的exe并将其提取到当前项目位置。
在这里链接,我们可以在这里下载最新版本的chromedriver。

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

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

1
2
3
4
5
System.setProperty("webdriver.chrome.driver","path of chromedriver.exe");

WebDriver driver = new ChromeDriver();

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