web-dev-qa-db-fra.com

Impossible de trouver l'élément sur une fenêtre fermée sur IE 11 avec sélénium

J'essaie de tester Internet Explorer 11 avec Selenium WebDriver . Le code est le suivant:

System.setProperty("webdriver.ie.driver", "Path/to//IEDriverServer.exe");
        WebDriver driver = new InternetExplorerDriver();
driver.get("www.google.com");
driver.findElement(By.name("q"));

Et je reçois cette erreur:

Ouverture du serveur InternetExplorerDriver (64 bits) 2.46.0.0 Écoute sur le port 43760 Exception dans le thread "principal" org.openqa.Selenium.NoSuchWindowException: impossible de trouver l'élément sur fenêtre fermée (AVERTISSEMENT: le serveur n'a fourni aucune information de piletrace ) Durée de la commande ou délai d'attente: 15 millisecondes Informations sur la construction: version: '2.46.0', révision: '61506a4624b13675f24581e453592342b7485d71', heure: '2015-06-04 10:22:50 'Informations système: hôte:' utilisateur1-PC ', adresse IP: '10 .0.23.71', os.name: 'Windows 7', os.Arch: 'AMD64', os.version: '6.1', Java.version: '1.8.0_45' Informations sur le pilote: org.openqa.Selenium.ie.InternetExplorerDriver Capabilities [{browserAttachTimeout = 0, enablePersistentHover = true, ie.forceCreateProcessApi = false, pageLoadStrategy = normal, ie.usePerProcessProxy = false, ignoreZoomSetting = false, handlesAlerts = true, version = 11, plate-forme = WINDOWS, nativeEvents = true, ie.ensureCleanSession = false, elementScrollBehavior = 0, ie.browserCommandLineSwitches =, requireWindowFocus = false, Nom du navigateur = Internet Explorer, initialBrowserUrl = http: // localhost: 43760/ , takesScreenshot = true, javascriptEnabled = true, ignoreProtectedModeSettings = false, enableElementCacheCleanup = true, cssSelectorsEnabled = true, peacefulAlertBehaviour = licencier}] ID de session: 8a5b7ab5-862a-462d-ab4b-929d4ed5b71a *** Informations sur l'élément: {Using = name, value = q} à Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) à Sun.reflect.NativeConstructorAccessorImpl.newInstance (Unknown Source) à Sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Unknown Source) à Java.lang.reflect.Constructor.newInstance (Source inconnue) à org.openqa.Selenium.remote.ErrorHandler.createThrowable (ErrorHandler.Java:204) à org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.Java:156) à org.openqa.Selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.Java:605) à org.openqa.Selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.Java:358) à org.openqa.Selenium.remote.RemoteWebDriver.findElementByName (RemoteWebDriver.Java:431) à org.openqa.Selenium.By $ ByName.findElement (By.Java:300) à org.openqa.Selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.Java:350) à MySel20Proj.MySel20Proj.App.main (App.Java:42)

J'ai essayé de suivre le didacticiel de configuration sur https://code.google.com/p/Selenium/wiki/InternetExplorerDriver mais ne fonctionne toujours pas. Et ce code fonctionne sur Firefox et Chrome.

12
Alex

Essayez d'accéder à Options Internet -> Sécurité -> "Activer le mode protégé" sur TOUTES LES ZONES doivent être cochées ou bien TOUT désélectionnées.

 enter image description here

31
user2771721

Il y a 2 façons:

Way 1: Définition de INITIAL_BROWSER_URL:

File ieFile = new File("D:\\IEDriverServer_x64_2.53.0\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", ieFile.getAbsolutePath());
DesiredCapabilities ieCaps = DesiredCapabilities.internetExplorer();
ieCaps.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.bing.com/");
driver = new InternetExplorerDriver(ieCaps);
//some operations on that site
driver.findElement(By.id("sb_form_q")).clear();
driver.findElement(By.id("sb_form_q")).sendKeys("Ripon Al Wasim");
driver.findElement(By.id("sb_form_go")).click();

Way 2: Pour définir une entrée de registre sur l'ordinateur cible:
Pour IE 11 uniquement, vous devez définir une entrée de registre sur l’ordinateur cible afin que le pilote puisse conserver Une connexion à l’instance d’Internet Explorer qu’il crée.

Pour Windows 32 bits: La clé à examiner dans l'éditeur de registre est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Pour Windows 64 bits: La clé est HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Veuillez noter que la sous-clé FEATURE_BFCACHE peut ou peut ne pas être présente et doit être créée si elle ne l'est pas ..__ Important: Dans cette clé, créez une valeur DWORD nommée iexplore.exe avec la valeur 0.

Pour plus de détails, visitez le site: https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration

8
Ripon Al Wasim

J'ai fait face au même problème après avoir passé en revue toutes les solutions possibles. Enfin, j'ai obtenu la réponse. Essayez ceci, il va certainement résoudre votre problème également.

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE");

capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

System.setProperty("webdriver.ie.driver","C://MavenTest//driver//IEDriverServer.exe");

driver = new InternetExplorerDriver();
3
User6

Pour Windows 32 bits: La clé à examiner dans l'éditeur de registre est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Pour Windows 64 bits: La clé est HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Veuillez noter que la sous-clé FEATURE_BFCACHE peut être ou ne pas être présente et doit être créée si elle n'est pas présente. Important: dans cette clé, créez une valeur DWORD nommée iexplore.exe avec la valeur 0.

 Screenshot

1
Manikanta Thota

Ripon Al Wasim a posté cette URL, qui est une clé pour IE11 et Selenium . https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration

J'ai eu cette configuration:

  • Windows 7 Pro 64 bits
  • IE11 64 bit, dernier j'ai trouvé
  • Sélénium serveur distant 2.53.1 64 bits
  • IEDriverServer 2.53.1 64 bits
  • Module Selenium 2.53.1 installé sur une machine Linux 64 bits utilisée avec Python 64 bits

téléchargé à partir d'ici: http://Selenium-release.storage.googleapis.com/index.html?path=2.53/

Je devais suivre le guide et:

  • Définissez le mode protégé amélioré sur désactivé dans toutes les zones de sécurité, ce qui est obligatoire pour IE10 et IE11.
  • Ajoutez la clé FEATURE_BFCACHE et son iexplore.exe DWORD dans le registre
  • J'ai créé tous les logiciels utilisés en 64 bits.
  • Vérifiez que le zoom avant IE est réglé sur 100%.
  • Vérifiez si la taille du texte est de 100% dans les paramètres d’affichage Windows.

En plus:

Et ça a fonctionné. Je détourne du guide lorsque je spécifie un chemin d'accès à IEDriverServer.exe lorsque j'exécute un serveur autonome. Il n'est donc pas nécessaire qu'il soit dans PATH.

0
nio

J'avais affronté le même problème. J'ai été confronté alors que j'exécutais mon code dans la version Maven. Ici, dans le fichier XML POM, j'avais une version différente alors que le Selenium installé est une autre version. Il suffit donc de changer la version pour qu'elle corresponde à la version installée. Et maintenant tout fonctionne bien

0
Addagatla Balaswamy