web-dev-qa-db-fra.com

Configuration de Webdriver à distance pour l'exécution de tests sur un ordinateur distant à l'aide de Java

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)
10
Reaz Patwary

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.

8
Grooveek

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é 

2

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}
  }
}
0
Cagy79
  • Tout d'abord, vous devez créer HubNode (serveur) et démarrer le hubNode (serveur) à partir de la ligne de commande/invite à l'aide de Java: -jar Selenium-server-standalone-2.44.0.jar -role hub 
  • Liez ensuite le noeud/client à ce concentrateur à l'aide de l'adresse IP ou du nom des ordinateurs du concentrateur dont le numéro de port est supérieur à 1024. Pour Node Machine par exemple: 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); 

0
Avinash Pande

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.

0
user2383377