Java 获得;驱动程序可执行文件的路径必须由webdriver.gecko.driver“设置;同时尝试使用Gecko驱动程序运行selenium网格代码
我在selenium网格的帮助下运行基本的selenium代码 以下是步骤: 步骤1:-下载了最新版本的selenium Standalone server(3.4.0) 步骤2:-使用命令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
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二进制文件:
路径的任何位置
环境变量和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)
要解决这个问题,您有两个选择
-Dwebdriver.gecko.driver
C:\\geckodriver.exe
添加到路径
变量中)