我在 selenium Grid 的帮助下运行基本的 selenium 代码。
以下是步骤:
第1步: - 下载最新版本的 selenium独立服务器(3.4.0);
第2步: - 使用命令java - jar <path of selenium standalone server>\\selenium-server-standalone-3.4.0.jar -role hub
创建 HUB - &gt; 成功运行;
第3步: - 使用命令java -jar selenium-server-standalone-3.4.0.jar -role hub -node http://localhost:4444/grid/register
创建节点 - &gt; 成功运行;
第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
提前致谢
答案 0 :(得分:1)
您已将默认配置的节点注册为java -jar selenium-server-standalone-3.4.0.jar -role hub -node http://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
您的代码块在我的最后工作正常。
答案 1 :(得分:1)
错误消息表明Selenium无法在以下位置找到GeckoDriver二进制文件:
PATH
环境变量和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 http://localhost:4444/grid/register
(您的第3步)在单独的JVM下分离。
要解决此问题,您有两种选择。
-Dwebdriver.gecko.driver
。C:\\geckodriver.exe
添加到PATH
变量中)