Selenium-NoSuchWindowException in IE 11

j'essaie d'automatiser une page Web en utilisant le sélénium dans IE11. J'ai réglé les paramètres du mode protégé au même niveau et le niveau de zoom est de 100%. Pendant l'exécution du test, il ouvre le site web donne cependant l'exception juste après. Ci-dessous est le code utilisé.

   File file = new File("C:UsersDesktopIEDriverServer.exe");
   System.setProperty("webdriver.ie.driver", file.getAbsolutePath() );       
   DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
   capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
   true); 
   WebDriver driver = new InternetExplorerDriver(capabilities);
   driver.get("http://www.google.com");

et le stacktrace d'exception

Started InternetExplorerDriver server (32-bit)
2.39.0.0
Listening on port 38122
Jul 11, 2014 1:50:02 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Software caused        connection abort: recv failed
Jul 11, 2014 1:50:02 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request
Exception in thread "main" org.openqa.selenium.NoSuchWindowException: Unable to find element on   closed window (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 18 milliseconds
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12'
 System info: host: 'Neeraj', ip: '10.136.180.161', os.name: 'Windows 7',  s.arch: 'amd64',      os.version: '6.1', java.version: '1.7.0_60'  Session ID: ab6edd65-8a66-41fa-be46-56fba7dbdfc9
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
 Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0,                          ignoreZoomSetting=false,                                  enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true,   unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true,   ignoreProtectedModeSettings=true, requireWindowFocus=false,  handlesAlerts=true, initialBrowserUrl=http://localhost:38122/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
      at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
 at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
 at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:348)
 at org.openqa.selenium.By$ById.findElement(By.java:220)
 at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
 at Test1.main(Test1.java:27)

toute suggestion sur la façon de résoudre ce problème.

19
demandé sur Ripon Al Wasim 2014-07-15 02:03:55

8 réponses

tout d'abord, n'utilisez pas

capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

comme vous avez déjà paramétré le mode protégé. Pour le problème que vous voyez, il devrait être en raison des paramètres de registre manquants qui est ajouté comme condition préalable à l'exécution de tests dans IE11:

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

22
répondu Sitam Jana 2016-02-12 11:17:54

j'utilise IE 11-64 bit windows machine. Ce point a fonctionné pour moi.

pour IE 11 seulement, vous aurez besoin de définir une entrée de Registre sur l'ordinateur cible afin que le pilote puisse maintenir une connexion à L'instance D'Internet Explorer qu'il crée.

pour les installations 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 présente ou non, et doit être créée si elle n'est pas présente.

Important: à l'Intérieur de cette clé, créez un DWORD valeur iexplore.exe avec la valeur de 0.

10
répondu Solomon Raja 2016-07-04 07:03:20

LA solution suggérée par @David Kemp est ne fonctionne pas pour le ie 11 de windows 10 64 bits . J'ai ajouté la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet explorer\Main\FeatureControl\FEATURE_BFCACHE selon les étapes mentionnées pour IE 11 seulement suivant https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration mais après avoir ouvert la page de certificat https (url https://my-page:9443), il est impossible d'exécuter driver.navigate().to("javascript:document.getElementById('overridelink').click()"); lancer NoSuchWindowException

Toutefois fonctionne très bien pour ie 11 de windows 7-64 bit et capable d'exécuter les scripts .

le travail autour pour faire fonctionner ie 11 Pour win 10 est de définir initialBrowserUrl capacités https://my-page:9443 comme ci-dessous

capabilities.setCapability("initialBrowserUrl", "https://my-page:9443");

mais je suis encore confus pourquoi pour ie11 / windows 10, c'est différent ?

7
répondu Som 2016-08-24 08:51:20

j'ai trouvé que, si le navigateur lancé reste concentré, vous obtiendrez cette exception. Dès que vous lancez la webdriver, ouvrir une autre fenêtre, par exemple, vous pouvez ouvrir eclipse dès que le script lance IE Pilote. L'exécution du Script commence, puis vous pouvez ouvrir votre pilote IE.. pour le gérer à travers des scripts, vous ajoutez le code suivant:

    public WebDriver driver, driver1;
    System.setProperty("webdriver.ie.driver", System.getProperty(
                    "webdriver.ie.driver", "./BrowserDrivers/IEDriverServer.exe"));
            driver = new InternetExplorerDriver(cap);
            this.driver.manage().deleteAllCookies();
            this.driver.manage().timeouts().implicitlyWait(WaitTimeConstants.WAIT_TIME_LONG, TimeUnit.SECONDS);

            this.driver.get("yourApplication.com");
            this.driver.manage().window().maximize();

public WebDriver driver, driver1;
System.setProperty("webdriver.ie.driver", System.getProperty(
                "webdriver.ie.driver", "./BrowserDrivers/IEDriverServer.exe"));
        driver1 = new InternetExplorerDriver(cap);
        this.driver1.manage().deleteAllCookies();

        this.driver1.get("http://www.google.com");
        this.driver1.manage().window().maximize();
1
répondu Pallavi 2016-07-11 10:47:08

ajout du domaine AUT à la liste des " Sites de confiance "pour i.e. dans"Options Internet". Résolu le problème.

1
répondu Jeevan Adiga 2017-09-27 13:55:25

la solution ci-dessous fonctionne aussi si à partir de la page actuelle vous naviguez sur la page suivante sur une action/événement et que le pilote de sélénium ne reconnaît pas la fenêtre :-

pour les installations Windows 64 bits, la clé est:

 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet explorer\Main\FeatureControl\FEATURE_BFCACHE

créer une valeur DWORD nommée iexplore.exe d'une valeur de 0.

0
répondu meenal 2016-08-11 09:13:05

Ajouter http://localhost/ à vos sites de confiance dans IE11. Cela a fonctionné pour moi,après avoir essayé tout le reste sans résultats.

-1
répondu IchimGA 2016-11-08 06:42:17

options IE -- > onglet Sécurité - > décocher "activer le Mode protégé" a fonctionné pour moi.

-1
répondu Ponns 2017-10-15 16:13:56