2012-06-22 7 views
4

J'ai récemment mis à jour vers Selenium 2.24.1 pour que Firefox 13 fonctionne. Avec cette mise à jour vous devez maintenant exécuter un exécutable similaire à chromedriver.exe pour qu'il envoie les événements à IE. Cependant, je n'ai eu aucune chance d'obtenir des tests pour fonctionner avec IE. Pour que cela fonctionne avec du chrome, il faut évidemment que je mette aussi le bit webdriver.chrome.driver, mais tout va bien et Firefox avec le même code.Selenium WebDriver et InternetExplorer

Voici mon code source:

public class GoogleTest { 

@Test 
public void test() throws Exception { 
    System.setProperty("webdriver.ie.driver", "IEDriverServer.exe"); 
    final WebDriver driver = new InternetExplorerDriver(); 
    driver.get("http://www.google.com"); 
    driver.findElement(By.name("q")).sendKeys("test"); 
    driver.findElement(By.name("q")).submit(); 
    driver.quit(); 
} 

}

Cependant, je suis accueilli avec cette trace de la pile lors de l'exécution de ce test

org.openqa.selenium.NoSuchElementException: Unable to find element with name == q (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 395 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.24.1', revision: '17205', time: '2012-06-19 15:28:49' 
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_01' 
Driver info: driver.version: RemoteWebDriver 
Session ID: e20f8370-00ed-4bf6-a4fa-a0c09c2b6d8c 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188) 
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472) 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:242) 
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:303) 
at org.openqa.selenium.By$ByName.findElement(By.java:291) 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:234) 
+0

Ce code exact fonctionne pour IE8 et Windows XP SP3 32 bits. Quel IE et/ou OS êtes-vous? Êtes-vous _absolument_ sûr que vous utilisez le plus récent IEDriverServer.exe et non l'ancien? Est-ce qu'il ouvre la page google? –

+0

Je suis sur IE9 Windows 7. J'ai tiré de la section des téléchargements seulement hier. J'ai essayé les versions 64 bits et 32 ​​bits de IEDriverServer.La page Google est très bien ouverte, mais dès que je tente d'interagir avec le pilote, c'est comme si l'information n'était jamais envoyée au conducteur. – Scott

+0

Okay. Est-ce que quelque chose d'autre fonctionne? Dites taper dans un formulaire sur une page html locale contenant une seule entrée? Ou ... eh bien, n'importe quoi? –

Répondre

12

Ceci est probablement vraiment évident, mais comme vous ne l'avez pas mentionné dans votre message d'origine et vous venez de télécharger le pilote et votre application de jouet interne fonctionne, avez-vous revérifié les paramètres de sécurité dans IE comme mentionné sur le IEDriver code page:

Sur IE 7 ou supérieur sur Windows Vista ou Windows 7, vous devez définir les paramètres du mode protégé pour chaque zone pour avoir la même valeur. La valeur peut être activée ou désactivée, tant qu'elle est la même pour toutes les zones. Pour définir les paramètres du mode protégé, choisissez "Options Internet ..." dans le menu Outils, puis cliquez sur l'onglet Sécurité. Pour chaque zone, il y aura une case à cocher au bas de l'onglet intitulé "Activer le mode protégé".

Si vous utilisez une version antérieure de Sélénium avant, vous avez probablement déjà fait cela, mais je me suis dit qu'il valait la peine de vérifier juste pour être sûr ...

+2

La dernière série de mises à jour a décidé de modifier ces paramètres, et l'INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS n'a rien fait non plus. – Scott

+1

Merci, j'avais oublié cette étape (en utilisant une machine virtuelle Windows différente de celle d'origine). J'étais en mode débogage et webdriver n'a rien pu trouver, impossible d'imprimer la source de la page, tout ce qu'il pouvait faire était d'ouvrir la page. J'étais perplexe. Merci encore! – JCarter

+0

Ce n'est pas le travail pour moi Dans le navigateur IE8. J'active et désactive "Activer le mode protégé" puis j'essaie mais je reçois toujours une erreur dans l'éclipse s'il vous plaît vérifier mon code http://pastebin.com/TBxhptUB –

1

Eh bien, le message d'erreur est trompeur au moins c'était dans mon cas. J'ai eu un système qui a été verrouillé par l'administrateur du système avec le mode protégé: Off. Donc, je ne pouvais pas passer en mode protégé. Puis j'ai réalisé que le système avait un utilisateur admin, donc connecté en tant qu'administrateur et essayé de passer en mode protégé. C'était encore désactivé. Ensuite, je lance Selenium sous le compte utilisateur admin et les choses ont bien fonctionné.

Vous devrez peut-être vous connecter avec des privilèges d'administrateur pour pouvoir exécuter le sélénium. Cette astuce a fonctionné pour moi.

0

Utilisez le code ci-dessous

System.setProperty("webdriver.ie.driver", "E:\\Selenium\\workspace\\IEDriverServer.exe"); 
WebDriver driver = new InternetExplorerDriver(); 
0

Vérifiez le serveur IEWebdriver que vous avez téléchargé. Si vous utilisez IE 32 bits, téléchargez et utilisez le pilote IEWeb 32 bits.

Espérons que ça aide.

0

J'avais des problèmes très similaires. Il y avait un paramètre dans Options Internet qui devait être activé afin de le faire fonctionner. Avancé> Paramètres> Sécurité> Autoriser l'exécution du contenu actif dans les fichiers sur Poste de travail.

Une fois que j'ai coché cette case, mes tests IE ont fonctionné comme prévu et ont pu trouver des éléments et interagir avec le navigateur.