2012-11-23 3 views
0

Pour tester une fonctionnalité de l'application, j'ai besoin de deux pilotes différents, car avec un pilote, je ne peux pas obtenir le comportement attendu. Je peux passer au deuxième pilote (driver2) comme ceci:WebDriver: basculer entre les pilotes

driver2.getWindowHandle(); 
driver2.getWindowHandles(); 

Je peux travailler correctement avec le driver2. Le problème est qu'en essayant de revenir à driver1 en faisant la même chose rien ne se passe! Le sélénium n'est pas capable de trouver des éléments. Ne fonctionne même pas avec:

driver1.switchTo.window(driver1.getWindowHandle); 

Comment puis-je résoudre ce problème?

Le flux du test serait driver1, drvier2, driver1 (impossible) et enfin driver2.

+0

Oui, mais si j'ouvre une nouvelle fenêtre avec le même pilote, je ne peux pas obtenir le résultat escompté. Selenium prend-il en charge l'utilisation de plus d'un pilote? Ce dont j'ai besoin, c'est d'ouvrir différents navigateurs pour les validations des utilisateurs. – matt

Répondre

0

a fait un test rapide:

FirefoxDriver d1 = new FirefoxDriver(); 
FirefoxDriver d2 = new FirefoxDriver(); 
d1.get("https://www.google.com"); 
d2.get("https://www.google.com"); 
d1.findElementByName("q").sendKeys("cheese"); 
d2.findElementByName("q").sendKeys("paneer"); 
d1.quit(); 
d2.quit(); 

Works pour me..I ne doivent pas utiliser getwindowhandle pour se déplacer dans les deux fenêtres des pilotes de diff. Cela répond-il à votre situation?

+0

En effet, pas besoin de changer de focus. Le problème est en essayant de manipuler les objets avec une page instancié avant d'utiliser d2: page1 = PageFactory (d1, PageClass.class); substance --doing avec page1-- page2 = PageFactory (d2, AnotherPageClass.class); --stuff avec page1.someMethod (page2--) broie ici! Je vais essayer de gérer les éléments directement avec d1.findElementBy .. – matt