首页 文章

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

提问于
浏览
6

我想让我的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/grid/register

比我启动我的测试:

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系统属性设置

我的代码有什么问题?

5 回答

  • 4

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

    在命令中添加此行

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

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

    json file with name DefaultNode.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
      }
    }
    

    To start the node with json config

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

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

  • 1

    这适用于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选项之前

  • 14

    您可以将节点作为:

    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
    
  • 0

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

    那摆脱了我的错误 .

  • 0

    当我在这里添加json配置文件中的两个属性时,我可以使用selenium网格远程运行chrome和firefox: notice the last two lines

    {
      "capabilities":
      [
        {
          "browserName": "firefox",
          "marionette": true,
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "chrome",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "internet explorer",
          "platform": "WINDOWS",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "safari",
          "technologyPreview": false,
          "platform": "MAC",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver"
        }
      ],
      "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
      "maxSession": 5,
      "port": -1,
      "register": true,
      "registerCycle": 5000,
      "hub": "http://192.168.1.2:4444",
      "nodeStatusCheckTimeout": 5000,
      "nodePolling": 5000,
      "role": "node",
      "unregisterIfStillDownAfter": 60000,
      "downPollingLimit": 2,
      "debug": false,
      "servlets" : [],
      "withoutServlets": [],
      "custom": {},
      "webdriver.gecko.driver":"c:/drivers/geckodriver.exe",
      "webdriver.chrome.driver":"c:/drivers/chromedriver.exe"
    }
    

相关问题