带有Chrome驱动程序的Selenium网格(WebDriverException:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置)

我想让我的Selenium Grid在Chrome驱动程序上运行。

起初我开始使用hub和node:java -jar selenium-server-standalone-2.45.0.jar -role hub java -jar selenium-server-standalone-2.45.0.jar -role node -hub http:// localhost: 4444 /网格/寄存器

比我启动我的测试:

public class ChromeDriverTest { private WebDriver driver = null; String BaseURL,NodeURL; @Before public void before() throws Exception{ BaseURL="http://www.google.com"; NodeURL="http://localhost:4444/wd/hub"; File file = new File("C:\\Users\\pushkaryova\\Desktop\\Nexus\\driver\\chromedriver.exe"); System.setProperty("webdriver.chrome.driver", file.getAbsolutePath()); DesiredCapabilities capa =DesiredCapabilities.chrome(); capa.setBrowserName("chrome"); capa.setPlatform(Platform.ANY); driver=new RemoteWebDriver(new URL(NodeURL),capa); } @Test public void GoogleSearch() throws Exception { driver.get("http://www.google.com"); WebElement searchBox = driver.findElement(By.xpath("//div[3]/div/input[1]")); hightlight(searchBox); driver.findElement(By.xpath("//div[3]/div/input[1]")).clear(); driver.findElement(By.xpath("//div[3]/div/input[1]")).sendKeys("Test"); driver.findElement(By.xpath("//button")).click(); } public void hightlight(WebElement webElement) throws InterruptedException { for (int i = 0; i < 2; i++) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript( "arguments[0].setAttribute('style', arguments[1]);", webElement, "color: red; border: 3px solid red;"); } } 

}

并得到一个错误:org.openqa.selenium.WebDriverException:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置

我的代码有什么问题?

driver可执行文件需要在节点机器上物理可用。 您可以在启动node时设置exe的路径

在命令中添加此行

-Dwebdriver.chrome.driver=./chromedriver.exe

我从json文件配置它,发现这更容易

名为DefaultNode.json的json文件

 { "capabilities": [ { "browserName": "firefox", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "chrome", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "platform": "WINDOWS", "browserName": "internet explorer", "maxInstances": 1, "seleniumProtocol": "WebDriver" } ], "configuration": { "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 5, "port": 5555, "host": ip, "register": true, "registerCycle": 5000, "hubPort": 4444, "hubHost": ip } } 

使用json config启动节点

 java -jar selenium-server-standalone-2.45.0.jar -role webdriver -nodeConfig DefaultNode.json -Dwebdriver.ie.driver=.\IEDriverServer.exe 

请注意, IEDriverServer.exejson文件放在同一目录中

这适用于3.3.1及以上版本

 java -Dwebdriver.chrome.driver="C:\chromedriver.exe" -jar selenium-server-standalone-2.45.0.jar -role node -hub localhost:4444/grid/register -browser "browserName=chrome,version=ANY,platform=WINDOWS,maxInstances=20" -maxSession 20 

Webdriver路径应放在-jar选项之前

您可以将节点作为:

 java -jar selenium-server-standalone-2.45.0.jar -role node -hub localhost:4444/grid/register -browser "browserName=chrome,version=ANY,platform=WINDOWS,maxInstances=20" -Dwebdriver.chrome.driver="C:\chromedriver.exe" -maxSession 20 

您可以在系统变量(对于Windows)中设置包含chromedriver可执行文件的文件夹的路径。

那摆脱了我的错误。