Я пытаюсь запустить Selenium Grid на драйвере Chrome.

Сначала запустил хаб и узел: 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

Что не так в моем коде?

8
Anna Puskarjova 12 Мар 2015 в 18:15

6 ответов

Лучший ответ

Исполняемый файл driver должен быть физически доступен на узловой машине. Вы можете указать путь к exe при запуске node

Добавьте эту строку в команду

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

Я настраиваю это из файла json и обнаружил, что это немного проще

файл json с именем 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
  }
}

Чтобы запустить узел с конфигурацией json

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

Обратите внимание, что IEDriverServer.exe находится в том же каталоге, что и файл json.

15
Saifur 12 Мар 2015 в 15:21

Вместо того, чтобы указывать исполняемый файл драйвера в команде cmd, лучше было бы:

java -jar **selenium-server-standalone-3.8.1.jar** -role node  -hub http://localhost:4444/grid/register

Сохраните его как файл .bat и храните все необходимые исполняемые файлы драйвера в ** той же папке , что и файл bat **.

Нет, если дважды щелкнуть файл bat, чтобы запустить узел, он автоматически подберет исполняемые файлы.

0
anandhu 7 Янв 2020 в 09:44

Вы можете указать путь к папке, содержащей исполняемый файл chromedriver, в системных переменных (для Windows).

Это избавило меня от ошибки.

0
OluLab 5 Апр 2016 в 18:35

Я мог запускать chrome и firefox удаленно, используя сетку селена, когда я добавил оба свойства в файл конфигурации json следующим образом: обратите внимание на последние две строки

{
  "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"
}
1
Amado Saladino 23 Дек 2018 в 19:44

Вы можете запустить свой узел как:

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
1
Matt 6 Ноя 2017 в 23:05

Это работает для меня в 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

4
Matt 6 Ноя 2017 в 23:06