J'essayais de configurer WebDriver à distance pour exécuter mes tests sur un ordinateur distant, car mon application est déployée sur mon hôte local. En utilisant Selenium RC, j’ai utilisé l’adresse hôte pour exécuter ces tests et cela a bien fonctionné; mais je ne parviens pas à configurer la classe de base à l'aide de WebDriver à distance. J'ai essayé le code suivant mais cela n'a pas fonctionné. En passant, j’ai passé des tests Selenium que je migre vers le WebDriver à distance. J'ai essayé Webdriver, qui fonctionne bien, mais je n'ai pas pu configurer le WebDriver distant pour une exécution à distance. Toute aide serait appréciée.
public static String base_url = "http://localhost:8084";
Proxy proxy = new Proxy();
proxy.setProxyAutoconfigUrl(base_url);
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(CapabilityType.PROXY, proxy);
RemoteWebDriver driver = new RemoteWebDriver(capabilities);
Selenium = new WebDriverBackedSelenium(driver, base_url);
Exemple de code de grille 2 qui fonctionne pour Firefox mais ne fonctionne pas pour IE9
String hubURL = "http://myip:4444/wd/hub";
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
//capability.setBrowserName("internet Explorer");
//capability.setPlatform("WINDOWS");
//capability.setVersion("9.0.4");
WebDriver driver = new RemoteWebDriver(new URL(hubURL), capability);
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
driver.quit();
Erreur que je recevais quand c'est IE9 bien que j'ai spécifié IE à partir du mode commande à partir du noeud:
Exception in thread "main" org.openqa.Selenium.WebDriverException: Error forwarding the new session cannot find : {platform=WINDOWS, ensureCleanSession=true, browserName=internet Explorer, version=}
Command duration or timeout: 110 milliseconds
Build info: version: '2.16.1', revision: '15405', time: '2012-01-05 12:23:11'
System info: os.name: 'Linux', os.Arch: 'AMD64', os.version: '2.6.38-13-generic', Java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:39)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:27)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:513)
at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:147)
at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:113)
at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:435)
at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:135)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:94)
at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:102)
at com.main.SelTest.main(SelTest.Java:25)
Caused by: org.openqa.grid.common.exception.GridException: Error forwarding the new session cannot find : {platform=WINDOWS, ensureCleanSession=true, browserName=internet Explorer, version=}
at org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.Java:151)
at org.openqa.grid.web.servlet.DriverServlet.process(DriverServlet.Java:81)
at org.openqa.grid.web.servlet.DriverServlet.doPost(DriverServlet.Java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:820)
at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.Java:428)
at org.openqa.jetty.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.Java:473)
at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.Java:568)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.Java:1530)
at org.openqa.jetty.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.Java:633)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.Java:1482)
at org.openqa.jetty.http.HttpServer.service(HttpServer.Java:909)
at org.openqa.jetty.http.HttpConnection.service(HttpConnection.Java:820)
at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.Java:986)
at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.Java:837)
at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.Java:243)
at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.Java:357)
at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.Java:534)
Vous devez installer un serveur Selenium (un concentrateur) et y enregistrer votre WebDriver distant. Ensuite, votre client communiquera avec le hub qui trouvera un WebDriver correspondant pour exécuter votre test.
Vous pouvez consulter ici pour plus d'informations.
Ce problème m'est venu à cause du fait que .. j'exécutais le serveur avec Selenium-server-standalone-2.32.0 et que le client était enregistré avec Selenium-server-standalone-2.37.0 ... -2.32.0 et a ensuite couru les choses ont bien fonctionné
Voici comment je me suis débarrassé de l'erreur:
WebDriverException: une erreur lors du transfert de la nouvelle session ne peut pas trouver: {plate-forme = WINDOWS, assureCleanSession = true, nom du navigateur = internet. Explorateur, version = 11}
Dans votre fichier nodeconfig.json, la version doit être une chaîne, pas un entier.
Ainsi, au lieu d'utiliser "version": 11
, utilisez "version": "11"
(notez les guillemets doubles).
Un exemple complet de fichier nodecondig.json de travail pour RemoteWebDriver:
{
"capabilities":
[
{
"platform": "WIN8_1",
"browserName": "internet Explorer",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
"version": "11"
}
,{
"platform": "WIN7",
"browserName": "chrome",
"maxInstances": 4,
"seleniumProtocol": "WebDriver"
"version": "40"
}
,{
"platform": "LINUX",
"browserName": "firefox",
"maxInstances": 4,
"seleniumProtocol": "WebDriver"
"version": "33"
}
],
"configuration":
{
"proxy": "org.openqa.grid.Selenium.proxy.DefaultRemoteProxy",
"maxSession": 3,
"port": 5555,
"Host": ip,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": {your-ip-address}
}
}
-jar Selenium-server-standalone-2.44.0.jar -role hub
Java -jar Selenium-server-standalone-2.44.0.jar -role webdriver -hub http://HubmachineIPAddress:4444/grid/register -port 5566
Une autre chose est que chaque fois que nous utilisons Internet Explore ou Google Chrome, nous devons définir: System.setProperty("webdriver.ie.driver",path);
Par défaut, InternetExplorerDriver écoute sur le port "5555". Changez votre huburl pour correspondre à cela. vous pouvez regarder dans la fenêtre de la boîte de dialogue cmd pour confirmer.