9

我試圖在使用Selenium WebDriver的Internet Explorer 11上運行測試。 的代碼是:無法在IE 11上使用Selenium在關閉窗口上查找元素

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

而且我得到這個錯誤:

Started InternetExplorerDriver server (64-bit) 2.46.0.0 Listening on port 43760 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: 15 milliseconds Build info: version: '2.46.0', revision: '61506a4624b13675f24581e453592342b7485d71', time: '2015-06-04 10:22:50' System info: 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' Driver info: org.openqa.selenium.ie.InternetExplorerDriver Capabilities [{browserAttachTimeout=0, enablePersistentHover=true, ie.forceCreateProcessApi=false, pageLoadStrategy=normal, ie.usePerProcessProxy=false, ignoreZoomSetting=false, handlesAlerts=true, version=11, platform=WINDOWS, nativeEvents=true, ie.ensureCleanSession=false, elementScrollBehavior=0, ie.browserCommandLineSwitches=, requireWindowFocus=false, browserName=internet explorer, initialBrowserUrl= http://localhost:43760/ , takesScreenshot=true, javascriptEnabled=true, ignoreProtectedModeSettings=false, enableElementCacheCleanup=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=dismiss}] Session ID: 8a5b7ab5-862a-462d-ab4b-929d4ed5b71a *** Element info: {Using=name, value=q} 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:204) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:605) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:358) at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:431) at org.openqa.selenium.By$ByName.findElement(By.java:300) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:350) at MySel20Proj.MySel20Proj.App.main(App.java:42)

我試圖按照配置教程https://code.google.com/p/selenium/wiki/InternetExplorerDriver,但仍然沒有工作。此代碼適用於Firefox和Chrome。

+0

腳本是否打開IE瀏覽器? – KDP

+0

是的,腳本打開IE瀏覽器,例外是當它必須找到元素q(搜索文本框) – Alex

+0

我在Selenium Build#2.44上試過它,它工作正常。請降級您的硒版本 – san1deep2set3hi

回答

27

嘗試將Internet選項 - >安全 - >上要麼被檢查了所有區或ALL選中「啓用保護模式」。

enter image description here

+1

有人知道爲什麼這是嗎? – Marijn

+0

順便說一句,它*確實*解決我的IE11測試問題。 – Marijn

+2

感謝隊友,它的工作原理。 – Bopsi

5

有2種方式:

方法1:設置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(); 

方式2:要設置目標計算機上的註冊表項:
僅適用於IE 11,您需要在目標計算機上設置註冊表項,以便驅動程序可以保持 與它創建的Internet Explorer實例的連接。

對於32位Windows:你必須在註冊表編輯器中考查的重點是 HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BFCACHE。

對於64位Windows:關鍵是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微軟\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BFCACHE。

請注意,FEATURE_BFCACHE子項可能存在也可能不存在,如果它不存在,應該創建。 重要:這裏面的關鍵,創建0

值名爲iexplore.exe的DWORD值,欲瞭解更多詳情,您可以訪問:https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

+0

這是主要焦點:ieCaps.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL,「http://www.bing.com/」); –

+0

方式1爲我工作。謝謝! :-) –

+0

這是我的榮幸,查理塞利格曼 –

0

對於32位Windows:的關鍵,你必須檢查在註冊表編輯器中是HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。

對於64位Windows:關鍵是HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。

請注意,FEATURE_BFCACHE子項可能存在也可能不存在,如果它不存在,應該創建。重要提示:這裏面的關鍵,創建我面對通過各種可能的解決方案去後,同樣的問題終於得到的答覆爲0

Screenshot

2

值名爲iexplore.exe的DWORD值。試試這個,它一定會解決你的問題。

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

我曾遇到類似的問題。我在Maven構建中運行我的代碼時遇到了問題。在POM XML文件中,我有一個不同的版本,而安裝的實際硒是另一個版本。所以只是改變了版本,以便它與安裝的版本匹配。現在一切工作正常

相關問題