【问题标题】:Exception: The path to the driver executable must be set by the webdriver.chrome.driver system property; with Remote WebDriver例外:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;使用远程 WebDriver
【发布时间】:2017-08-09 18:57:08
【问题描述】:

当我修改代码以使用 RemoteWebDriver 和 ChromeDriver 运行时,我得到:异常:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;

代码:

File file = new File("C:/WebDrivers/chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", Path_FileDownload);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
driver = new RemoteWebDriver(new URL("http://192.168.224.160:4444/wd/hub"), cap);
//driver = new ChromeDriver(cap);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

该文件存在于我正在运行它的 PC 上。当我切换到 ChromeDriver 而不是 Remote WebDriver 时工作正常。

【问题讨论】:

  • 欢迎来到硒地狱。看来您的路径不正确。 chromedriver 可执行文件在您的系统上的什么位置?
  • 它位于 C:\WebDrivers\chromedriver.exe。

标签: java selenium selenium-webdriver selenium-chromedriver remotewebdriver


【解决方案1】:

线条

File file = new File("C:/WebDrivers/chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());

仅当您使用 ChromeDriver 时才有效。我将此模式称为local 模式,即运行测试用例的 JVM 也会脱离浏览器。

当您使用RemoteWebDriver 时,您是在remote 模式下工作,因为剥离您的测试用例的JVM 与另一个JVM(硒节点)对话以剥离浏览器。

当您使用RemoteWebDriver 时,您正在尝试通过集线器连接到作为节点运行的不同JVM。

对于这个用例,您需要在运行节点的机器上执行以下操作之一:

  • 将C:\WebDrivers 添加到您的PATH 变量中。确保通过打开新的命令提示符并运行echo %PATH% 来确认其已正确添加。您应该在命令输出中看到C:\WebDrivers。 (或)
  • 通过添加webdriver.chrome.driver 作为JVM 参数来启动您的节点。例如,像这样:java -Dwebdriver.chrome.driver=C:\WebDrivers\chromedriver.exe -jar selenium-server-standalone-2.53.1.jar -role node

【讨论】:

    【解决方案2】:

    路径的开头有两个斜杠:
    "C://WebDrivers" + "/chromedriver.exe"
    应该是
    "C:/WebDrivers" + "/chromedriver.exe"

    Java 文件路径使用“/”分隔目录和文件,与基于 UNIX 的系统相同。

    【讨论】:

    • 我必须有第二个斜线才能逃脱第一个斜线。否则 Java 会报错。
    • 不,你不知道。您必须转义“\”而不是“/”。
    • 仍然遇到同样的错误。我将文件行修改为:“C:/WebDrivers/chromedriver.exe”,当我将其放入文件资源管理器时加载。
    • 尝试打印System.getProperty(webdriver.chrome.driver) 的值。可能会进一步帮助我们。
    • 我添加了 System.out.println(System.getProperty("webdriver.chrome.driver"));到代码,就在 System.setProperty 之后。它给了我:C:\WebDrivers\chromedriver.exe
    【解决方案3】:
        ChromeOptions options = new ChromeOptions();
        options.setBinary("Chrome_Binary/chrome.exe");
        options.addArguments("--start-fullscreen");
        System.setProperty("webdriver.chrome.driver", "Drivers/Chrome/chromedriver.exe");
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        cap.setCapability(ChromeOptions.CAPABILITY, options);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2016-11-04
      • 2020-11-27
      • 2013-08-18
      • 2017-04-26
      • 2017-11-12
      相关资源
      最近更新 更多