Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 获得;驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性“设置”;尽管设置了正确的路径_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Selenium 获得;驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性“设置”;尽管设置了正确的路径

Selenium 获得;驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性“设置”;尽管设置了正确的路径,selenium,selenium-webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Selenium Chromedriver,我的代码非常简单 代码: 已从selenium hq站点下载并添加jar作为“Java-3.4.0”。 从同一个网站下载Google Chrome驱动程序-2.29,并将其定位在“D:\List\u of\u Jar”路径中 当我运行上面的代码时,我得到一个错误 java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system p

我的代码非常简单 代码:

已从selenium hq站点下载并添加jar作为“Java-3.4.0”。 从同一个网站下载Google Chrome驱动程序-2.29,并将其定位在“D:\List\u of\u Jar”路径中

当我运行上面的代码时,我得到一个错误

java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:738)
获取版本错误,但配置不正确。所以请帮我解决这个问题

详情:

  • 操作系统:WindowsXP
  • Java:JDK1.8和JRE1.8
  • Selenium:3.4版

应在启动浏览器之前设置驱动程序路径,如下所示

System.setProperty("webdriver.chrome.driver","D:\List_of_Jar\chromedriver.exe");
WebDriver wd =new ChromeDriver();
String baseUrl = "https://www.google.com";
wd.get(baseUrl);"

您未正确设置chrome驱动程序路径。属性必须在WebDriver初始化之前设置

像这样设置属性-

System.setProperty("webdriver.chrome.driver","D:\\List_of_Jar\\chromedriver.exe")
WebDriver wd =new ChromeDriver();
String baseUrl = "https://www.google.com";
wd.get(baseUrl);" 

如果您使用的是IntelliJ IDE,那么在IntelliJ上,如果没有在“运行>编辑配置>虚拟机选项”中进行设置,我将遇到以下错误:

Failed scenarios:
C:/Users/DATestAdmin/IdeaProjects/TestLogin/src/test/resources/login.feature:4 # Scenario: Successfully logging in

1 Scenarios (1 failed)
3 Steps (3 skipped)
0m0.194s

java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property;
因此,一旦我在“运行>编辑配置>虚拟机选项”中本地添加了chromedriver的路径:

-Dwebdriver.chrome.driver="C:\\Users\\This\\Is\\Where\\ChromeDriverIs\\chromedriver_win32.exe"
编辑配置“>

我现在可以成功启动Chrome浏览器了。

试试:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Demo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.setProperty("webdriver.chrome.driver", "I:\\Bhasker-ShiroCode\\work\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

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

}
要避免错误,请执行以下操作:

  • webdriver.chrome.driver(应使用小写字母)
  • 必须提供正确的chromedriver.exe(正确路径)
  • 导入类路径下的所有Selenium JAR

由于我的机器上没有安装chrome驱动程序,所以我遇到了相同的错误。 安装chrome驱动程序。请执行以下操作:

你应该按照Selenium wiki的要求使用巧克力。它会马上起作用

安装了Chocolate的Windows用户:choco安装chromedriver


我也遇到了同样的问题。以下修复使我的应用程序运行平稳

首先,可以从下面的链接中找到所需的chrome驱动程序版本

最好始终使用最新版本。下载后,在
System.setProperty(“webdriver.chrome.driver”、“{Your path chrome driver}”);

遵循代码片段

        System.out.println("Creating Chrome Driver");
     // Set Chrome Driver
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.get("{Your URL}");
        System.out.println("Wait a bit for the page to render");
        TimeUnit.SECONDS.sleep(5);
        System.out.println("Taking Screenshot");
        File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        String imageDetails = "D:\\Images";
        File screenShot = new File(imageDetails).getAbsoluteFile();
        FileUtils.copyFile(outputFile, screenShot);
        System.out.println("Screenshot saved: {}" + imageDetails);

我完全同意Murthi的观点,但更好的方法是设置驱动程序的相对路径,而不是绝对路径

相对路径如下所示:

System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver.exe");
A结果:是电脑中驱动程序的路径

System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
为什么??
将驱动程序放在项目中是一种很好的做法,而不仅仅是放在计算机中。只需查找或创建文件夹f.e.resources,在资源中创建名为f.e.drivers的文件夹,然后将驱动程序/驱动程序exe文件导入其中。

以下几行操作正常

public class TestNGFile {

    public String baseUrl = "https://google.com";
    String driverPath = "C:\\\\Users\\\\Documents\\\\selenium\\\\chromedriver_win32\\\\chromedriver.exe";
    @Test
    public void verifyHomepageTitle() {

        System.out.println("launching chrome browser"); 
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Documents\\selenium\\chromedriver_win32\\chromedriver.exe");
        //System.setProperty("webdriver.gecko.driver", driverPath);
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTitle = "Google";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.close();
我也面临同样的问题。 “驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置。” 已下载驱动程序并已在系统属性中设置

public class TestNGFile {

    public String baseUrl = "https://google.com";
    String driverPath = "C:\\\\Users\\\\Documents\\\\selenium\\\\chromedriver_win32\\\\chromedriver.exe";
    @Test
    public void verifyHomepageTitle() {

        System.out.println("launching chrome browser"); 
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Documents\\selenium\\chromedriver_win32\\chromedriver.exe");
        //System.setProperty("webdriver.gecko.driver", driverPath);
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTitle = "Google";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.close();