web-dev-qa-db-fra.com

Grille Selenium avec pilote Chrome (WebDriverException: le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.chrome.driver)

J'essaie de faire fonctionner ma grille Selenium sur le pilote Chrome.

Au début, j'ai démarré hub et noeud: Java -jar Selenium-server-standalone-2.45.0.jar -role hubJava -jar Selenium-server-standalone-2.45.0.jar -role node -hub http: // localhost: 4444/grid/register

que je lance mon test:

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;");
    }
}

}

et obtenez une erreur: org.openqa.Selenium.WebDriverException: le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.chrome.driver.

Quel est le problème dans mon code?

6
Anna Puskarjova

L’exécutable driver doit être disponible physiquement sur la machine du noeud. Vous pouvez définir le chemin sur exe au démarrage de node

Ajouter cette ligne dans la commande

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

Je configure ceci à partir du fichier json et trouve que c'est un peu plus facile

fichier json avec le nom 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
  }
}

Pour démarrer le nœud avec json config

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

Notez que IEDriverServer.exe est placé dans le même répertoire que le fichier json

14
Saifur

Cela fonctionne pour moi dans 3.3.1 et ci-dessus 

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

Le chemin Webdriver doit être placé avant les options -jar

Vous pouvez démarrer votre noeud en tant que:

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
Freya

Vous pouvez définir le chemin d'accès au dossier contenant l'exécutable chromedriver dans vos variables système (pour Windows). 

Cela s'est débarrassé de l'erreur pour moi.

0
OluLab

Je pouvais exécuter chrome et firefox à distance en utilisant la grille Selenium lorsque j’avais ajouté les deux propriétés dans le fichier de configuration json comme ceci: remarquez les deux dernières lignes

{
  "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"
}
0
Amado Saladino