internet iexplorer descargar chromedriver java internet-explorer selenium browser-automation

java - iexplorer - Selenium-NoSuchWindowException en IE 11



selenium iexplorer webdriver (8)

Estoy tratando de automatizar una página web usando selenio en IE11. He establecido la configuración del modo protegido en el mismo nivel y el nivel de zoom es del 100%. Mientras se ejecuta la prueba, se abre el sitio web, sin embargo, da la excepción justo después. A continuación se muestra el código utilizado.

File file = new File("C://Users//Desktop//IEDriverServer.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");

Y la excepción stacktrace.

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)

Algunas sugerencias para resolver esto.


Agregue http://localhost/ a sus sitios de confianza en IE11. Esto funcionó para mí, después de intentar todo lo demás sin resultados.


Descubrí que, si el navegador iniciado se mantiene enfocado, obtendrás esa excepción. Tan pronto como inicie el controlador web, abra cualquier otra ventana, por ejemplo, puede abrir eclipse tan pronto como el script inicie el controlador IE. La ejecución del script comienza, y luego puede abrir su controlador de IE ... para manejarlo mediante scripts, agregue el siguiente código:

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();



Estoy utilizando IE 11 - máquina de Windows de 64 bits . Este punto funcionó para mí.

Solo para IE 11, deberá configurar una entrada de registro en el equipo de destino para que el controlador pueda mantener una conexión con la instancia de Internet Explorer que crea.

Para instalaciones de Windows de 32 bits, la clave que debe examinar en el editor del registro es HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Internet Explorer / Main / FeatureControl / FEATURE_BFCACHE.

Para instalaciones de Windows de 64 bits, la clave es HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / Internet Explorer / Main / FeatureControl / FEATURE_BFCACHE.

Tenga en cuenta que la subclave FEATURE_BFCACHE puede o no estar presente, y debe crearse si no está presente.

Importante: Dentro de esta clave, cree un valor DWORD llamado iexplore.exe con el valor de 0.


La solución de abajo también funciona si desde la página actual navega en la página siguiente en alguna acción / evento y el controlador de selenio no reconoce la ventana: -

Para instalaciones de Windows de 64 bits, la clave es:

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

Dentro de esto, cree un valor DWORD llamado iexplore.exe con el valor de 0.


La solución sugerida por @David Kemp no funciona para las 11 ventanas de 10 a 64 bits . He agregado la clave de registro HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Internet explorer/Main/FeatureControl/FEATURE_BFCACHE acuerdo con los pasos mencionados Para IE 11 solo siguiendo https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration pero después de abrir la página del certificado https (url https: // my-page: 9443 ) no se puede ejecutar driver.navigate().to("javascript:document.getElementById(''overridelink'').click()"); lanzando NoSuchWindowException

Sin embargo, lo mismo funciona bien, es decir, 11 de Windows 7-64 bit y es capaz de ejecutar los scripts.

La solución para hacer que ie 11 funcione para win 10 es mediante la configuración de las capacidades initialBrowserUrl en https: // my-page: 9443 como a continuación

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

pero todavía estoy confundido por qué para ie11 / windows 10 es diferente?


Opciones de IE -> pestaña Seguridad -> Desmarque "Habilitar modo protegido" funcionó para mí.


Se agregó el dominio de AUT a la lista de "Sitios de confianza", por ejemplo, en "Opciones de Internet". Resuelve el problema.