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

时间:2012-12-05 13:52:34

标签: selenium webdriver selenium-webdriver selenium-chromedriver

我试过这个

WebDriver driver = new ChromeDriver();

但我收到的错误是

  

测试失败:setUp(com.TEST):驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置;有关更多信息,请参阅code here。最新版本可以从Link

下载

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

13 个答案:

答案 0 :(得分:239)

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

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

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

这是从ChromeDriver Documentation中最实用的指南中提取的。

答案 1 :(得分:21)

Chrome Driver下载Chrome驱动程序的更新版本 请同时阅读发行说明Here 如果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");

  }

 }

答案 2 :(得分:18)

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

答案 3 :(得分:8)

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

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

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

答案 4 :(得分:6)

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

答案 5 :(得分:6)

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

答案 6 :(得分:6)

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

$re = '/(\d+H\d+)\s*a\s*((?1))/'; 
$str = "Domingos: 10H00 a 20H00\nDomingos: 10H00 a 20H00."; 
preg_match_all($re, $str, $matches, PREG_SET_ORDER);
print_r($matches);

答案 7 :(得分: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");

答案 8 :(得分: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 =&#34; webdriver.chrome.driver&#34; 和GECKO_DRIVER_EXE_PROPERTY =&#34; webdriver.gecko.driver&#34;

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

enter image description here

答案 9 :(得分:0)

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

apt install chromium-chromedriver

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

pip install selenium

答案 10 :(得分:0)

要在Chrome中运行Selenium WebDriver测试用例,请按照以下步骤操作:

  1. 首先,设置属性和Chrome驱动程序路径:

    System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
    
  2. 初始化Chrome驱动程序的对象:

    WebDriver driver = new ChromeDriver();
    
  3. 将URL传递到WebDriver的get方法中:

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

答案 11 :(得分: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();
}

答案 12 :(得分:-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");