webentwicklung-frage-antwort-db.com.de

Element kann bei geschlossenem Fenster nicht gefunden werden IE 11 mit Selen

Ich versuche, Tests für Internet Explorer 11 auszuführen, die mit Selenium WebDriver ... arbeiten. Der Code lautet:

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

Und ich bekomme diesen Fehler:

Start des InternetExplorerDriver-Servers (64-Bit) 2.46.0.0 Überwachung von Port 43760 Ausnahme im Thread "main" org.openqa.Selenium.NoSuchWindowException: Element kann nicht gefunden werden geschlossenes Fenster (WARNUNG: Der Server hat keine Stacktrace-Informationen bereitgestellt.) Dauer oder Zeitlimit des Befehls: 15 Millisekunden Build-Info: Version: '2.46.0', Revision: '61506a4624b13675f24581e453592342b7485d71', Zeit: '2015-06-04 10:22:50 'Systeminfo: Host:' user1-PC ', ip: '10 .0.23.71', os.name: 'Windows 7', os.Arch: 'AMD64', os.version: '6.1', Java.version: '1.8.0_45' Treiberinfo: org.openqa.Selenium.ie.InternetExplorerDriver Capabilities [{browserAttachTimeout = 0, enablePersistentHover = true, ie.forceCreateProcessApi = false, pageLoadStrategy = normal, ie.usePerProcessProxy = false, ignoreZoomSetting = false, HandlesAlerts = true, Version = 11, Plattform = WINDOWS, nativeEvents = true, ie.ensureCleanSession = false, elementScrollBehavior = 0, ie.browserCommandLineSwitches =, requiredWindowFocus = false, browserName = Internet Explorer, initialBrowserUrl = http: // localhost: 43760/ , takesScreenshot = true, javascriptEnabled = true, ignoreProtectedModeSettings = false, enableElementCacheCleanup = true, cssSelectorsEnabled = true, unexpectedAlertBehaviour = entlassen}] Sitzungs-ID: 8a5b7ab5-862a-462d-ab4b-929d4ed5b71a *** Elementinfo: {using = name, value = q} unter Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (native Methode) at Sun.reflect.NativeConstructorAccessorImpl.newInstance (Unknown Source) um Sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Unknown Source) unter Java.lang.reflect.Constructor.newInstance (Unknown Source) beim org.openqa.Selenium.remote.ErrorHandler.createThrowable (ErrorHandler.Java:204) beim org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.Java:156) beim org.openqa.Selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.Java:605) beim org.openqa.Selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.Java:358) beim org.openqa.Selenium.remote.RemoteWebDriver.findElementByName (RemoteWebDriver.Java:431) at org.openqa.Selenium.By $ ByName.findElement (By.Java:300) um org.openqa.Selenium.remote.RemoteWebDriver.findElement (RemoteWebDriver.Java:350) bei MySel20Proj.MySel20Proj.App.main (App.Java:42)

Ich habe versucht, das Konfigurations-Tutorial unter https://code.google.com/p/Selenium/wiki/InternetExplorerDriver zu befolgen, funktioniert aber immer noch nicht. Und dieser Code funktioniert auf Firefox und Chrome.

12
Alex

Gehen Sie zu Internetoptionen -> Sicherheit -> "Geschützten Modus aktivieren" in ALLE - Zonen sollten entweder aktiviert sein oder ALL nicht aktiviert sein.

 enter image description here

31
user2771721

Es gibt zwei Möglichkeiten:

Möglichkeit 1: Einstellung von 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();

Weg 2: So legen Sie einen Registrierungseintrag auf dem Zielcomputer fest:
Nur für IE 11 müssen Sie auf dem Zielcomputer einen Registrierungseintrag festlegen, damit der Treiber eine Verbindung mit der erstellten Instanz von Internet Explorer aufrechterhalten kann.

Für 32-Bit-Windows: Der Schlüssel, den Sie im Registrierungs-Editor untersuchen müssen, lautet HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Für 64-Bit-Windows: Der Schlüssel lautet HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Bitte beachten Sie, dass der FEATURE_BFCACHE-Unterschlüssel möglicherweise vorhanden ist oder nicht und sollte erstellt werden, wenn er nicht vorhanden ist .. _ Wichtig: Erstellen Sie in diesem Schlüssel einen DWORD-Wert mit dem Namen iexplore.exe mit dem Wert 0.

Weitere Informationen finden Sie unter: https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration

8
Ripon Al Wasim

Ich hatte das gleiche Problem, nachdem ich jede mögliche Lösung durchgearbeitet hatte. Schließlich bekam ich die Antwort. Versuchen Sie dies, es wird auf jeden Fall Ihr Problem lösen.

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

Für 32-Bit-Windows: Der Schlüssel, den Sie im Registrierungs-Editor untersuchen müssen, lautet HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Für 64-Bit-Windows: Der Schlüssel lautet HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Beachten Sie, dass der FEATURE_BFCACHE-Unterschlüssel möglicherweise vorhanden ist oder nicht und sollte erstellt werden, wenn er nicht vorhanden ist. Wichtig: Erstellen Sie in diesem Schlüssel einen DWORD-Wert mit dem Namen iexplore.exe mit dem Wert 0.

 Screenshot

1
Manikanta Thota

Ripon Al Wasim hat diese URL veröffentlicht. Dies ist ein Schlüssel für die Zusammenarbeit von IE11 mit Selenium . https://github.com/SeleniumHQ/Selenium/wiki/InternetExplorerDriver#required-configuration .

Ich hatte dieses Setup:

  • Windows 7 Pro 64-Bit
  • IE11 64 Bit, zuletzt habe ich gefunden
  • Selen Remote Server 2.53.1 64 Bit
  • IEDriverServer 2.53.1 64 Bit
  • Selenium 2.53.1-Modul auf einem 64-Bit-Linux-Computer mit 64-Bit-Python installiert

von hier heruntergeladen: http://Selenium-release.storage.googleapis.com/index.html?path=2.53/

Ich musste der Anleitung folgen und:

  • Setzen Sie den erweiterten geschützten Modus in allen Sicherheitszonen auf "Deaktiviert". Dies ist eine Voraussetzung für IE10 und IE11.
  • Fügen Sie den Schlüssel FEATURE_BFCACHE und iexplore.exe DWORD in die Registrierung ein
  • Ich habe alle verwendete Software auf 64 Bit eingestellt.
  • Vergewissern Sie sich, dass die Vergrößerung IE auf 100% eingestellt ist.
  • Überprüfen Sie, ob die Textgröße in den Windows-Anzeigeeinstellungen 100% beträgt.

Zusätzlich:

  • Ich musste die Proxy-Einstellungen im IE deaktivieren, da Selenium remote server nicht mit IEDriverServer kommunizieren konnte.
  • Ich verwende den Web-Treiber mit requireWindowFocus auf true, da der Schlüssel bei 64-Bit-Selen aufgrund eines Timeout-Problems langsam war ( Selenium WebDriver, der sehr langsam in das Textfeld auf IE browser ) eingibt.

Und es hat funktioniert. Wenn ich einen eigenständigen Server verwende, gebe ich vom Handbuch ab, wenn ich einen Pfad zu IEDriverServer.exe eingebe, sodass er nicht im Pfad enthalten sein muss.

0
nio

Ich war mit einem ähnlichen Problem konfrontiert. Ich sah mich an, während ich meinen Code im Maven-Build ausführte. Hier in der POM-XML-Datei hatte ich eine andere Version, während tatsächlich installiertes Selenium eine andere Version ist. Also einfach die Version so geändert, dass sie mit der installierten Version übereinstimmt. Und jetzt funktioniert alles gut

0