Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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
Java 获得;驱动程序可执行文件的路径必须由webdriver.gecko.driver“设置;同时尝试使用Gecko驱动程序运行selenium网格代码_Java_Selenium_Selenium Webdriver_Selenium Grid_Geckodriver - Fatal编程技术网

Java 获得;驱动程序可执行文件的路径必须由webdriver.gecko.driver“设置;同时尝试使用Gecko驱动程序运行selenium网格代码

Java 获得;驱动程序可执行文件的路径必须由webdriver.gecko.driver“设置;同时尝试使用Gecko驱动程序运行selenium网格代码,java,selenium,selenium-webdriver,selenium-grid,geckodriver,Java,Selenium,Selenium Webdriver,Selenium Grid,Geckodriver,我在selenium网格的帮助下运行基本的selenium代码 以下是步骤: 步骤1:-下载了最新版本的selenium Standalone server(3.4.0) 步骤2:-使用命令java-jar\\selenium-server-standalone-3.4.0.jar创建HUB-角色HUB->成功运行 步骤3:-使用命令创建节点java-jar selenium-server-standalone-3.4.0.jar-角色中心-节点http://localhost:4444/gri

我在selenium网格的帮助下运行基本的selenium代码

以下是步骤:

步骤1:-下载了最新版本的selenium Standalone server(3.4.0)

步骤2:-使用命令
java-jar\\selenium-server-standalone-3.4.0.jar创建HUB-角色HUB
->成功运行

步骤3:-使用命令创建节点
java-jar selenium-server-standalone-3.4.0.jar-角色中心-节点http://localhost:4444/grid/register
->运行成功

步骤4:-创建了一个简单的selenium程序,代码如下:

public class ClassName {

  public static void main(String args[]) throws InterruptedException, MalformedURLException {
    System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
    DesiredCapabilities cap=DesiredCapabilities.firefox();
    cap.setPlatform(Platform.WINDOWS);
    cap.setBrowserName("firefox");
    URL url = new URL("http://localhost:4444/wd/hub");

    WebDriver wd1 = new RemoteWebDriver(url, cap);
    wd1.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    wd1.manage().window().maximize();

    wd1.get("http://www.clickindia.com/");
    wd1.findElement(By.linkText("Post Free Ad")).click();
    Thread.sleep(3000);
    wd1.findElement(By.linkText("Select category manually")).click();
    Thread.sleep(3000);
    WebElement country = wd1.findElement(By.id("combo_0"));
    Select sel = new Select(country);
    sel.selectByVisibleText("Jobs");
  }
}
在运行上述代码时,引发了以下异常:

注意:如果我在没有remoteDriver的情况下运行上述代码,并且作为一个普通的WebDriver程序,那么它可以正常工作和运行

selenium独立服务器和Gecko文件的位置相同

Gecko版本是v0.16.0


提前感谢

您已使用默认配置将节点注册为
java-jar selenium-server-standalone-3.4.0.jar-role hub-nodehttp://localhost:4444/grid/register
。因此,您的节点无法处理该请求

您可以考虑将节点注册为以下配置:

java -Dwebdriver.gecko.driver=C:\\geckodriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://localhost:4444/grid/register

您的代码块在我这里工作正常。

错误消息表明Selenium无法在以下文件中找到GeckoDriver二进制文件:

  • 属于
    路径的任何位置
    环境变量和
  • 它无法通过表示geckodriver二进制文件位置的JVM参数(
    System.getProperty(“webdriver.gecko.driver”)
    )找到任何有效值
  • 线路

    System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
    
    确保只有当前JVM(执行
    ClassName.main()
    方法的JVM)知道geckodriver二进制文件的位置。这就是为什么使用
    FirefoxDriver
    时代码运行良好的原因

    但是,当您使用
    RemoteWebDriver
    时,即在网格模式下,您试图针对网格设置运行,通过JVM参数
    “webdriver.gecko.driver”
    设置geckodriver位置不会对其他JVM产生任何影响(请记住,负责支持浏览器交互的节点使用命令
    java-jar selenium-server-standalone-3.4.0.jar-role hub-node在单独的JVM下分离出来http://localhost:4444/grid/register
    (您的步骤3

    要解决这个问题,您有两个选择

  • 生成节点并指定geckodriver的位置时,可以使用JVM参数
    -Dwebdriver.gecko.driver
  • 将geckodriver二进制文件下载到文件夹中,并将其位置作为变量的一部分(即,将
    C:\\geckodriver.exe
    添加到
    路径
    变量中)