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?
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
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
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.
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"
}