5

雖然使用IE進行自動化使用Selenium Webdriver,但我可以打開該URL,但在該頁面上查找該元素正在拋出以下異常:異常(org.openqa.selenium.NoSuchWindowException):在Internet Explorer中將Selenium WebDriver與Java結合使用

org.openqa.selenium.NoSuchWindowException:無法在 封閉的窗口中找到元素(警告:服務器未提供任何堆棧跟蹤信息 )

我已經試過driver.switchTo.window()方法,但它的不工作。 我已經搜索了幾個小時,我沒有得到任何地方。

下面的代碼:

public static Selenium selenium; 

public static void main(String args[]) { 

    try { 

     System.setProperty(
      "webdriver.ie.driver", 
      "D:\\Driver\\IEDriverServer_Win32_2.32.3_latest\\IEDriverServer.exe"); 

     DesiredCapabilities capab = DesiredCapabilities.internetExplorer(); 
     capab.setCapability(
      InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, 
      true); 

     WebDriver driver = new InternetExplorerDriver(capab); 
     driver.get("http://www.google.com"); 
     driver.findElement(By.xpath(".//*[@id='addlang']/a[1]")).click(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+4

請注意下面的答案,添加該功能確實會在您的測試中引起不穩定情況,甚至在刪除該設置之前診斷問題都沒有意義。我也會好心地問你,不要**用谷歌進行測試(除非你有需要,而且我會對它是什麼感興趣,因爲我會投入巨大的賭注,因爲你不一定* *需要**實際上是在谷歌的用戶界面搜索,有辦法解決它)。這是一個**非常複雜的頁面。請使用更簡單的頁面。 – Arran

+0

感謝Arran的回覆。我嘗試使用除谷歌以外的其他頁面,但得到相同的錯誤。不過,我想我已經理解了這個問題。這是與設置INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS功能。再次感謝.. – Amit

+0

我在使用IE 11時遇到了同樣的異常。我沒有使用任何功能,但不幸的是我得到了這個異常。 –

回答

7

刪除能力INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS和手動設置你的IE保護模式的設置是所有區域中均相同。

來源:

  1. http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html

  2. NoSuchElementException is occurred during implementation of InternetExplorerDriver in Selenium WebDriver

+0

感謝您的回覆。是的,我也嘗試手動設置,但我在辦公環境中工作,並且我沒有管理員權限,因此我需要設置INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,否則它將無法工作。還有其他方法嗎? – Amit

+2

你應該問你的辦公室管理員你需要改變以使你的自動化測試工作,應該不那麼難。 – aimbire

+0

@Amit:解決方法是功能,但是,如果這不起作用,那麼解決方法是與您的經理交談。如果你無法控制自己的測試環境,他/她會期望什麼? –

3
case "ie_driver":   

    //IE CODE 
    DesiredCapabilities cap = new DesiredCapabilities(); 
    cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 
    cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "https://testvmm6.partnersonline.com/vmm"); 
    cap.internetExplorer().setCapability("ignoreProtectedModeSettings", true); 

    System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"//exe//IEDriverServer1.exe"); 
    cap.setCapability("IE.binary", "C:/Program Files (x86)/Internet Explorer/iexplore.exe"); 
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
    cap.setJavascriptEnabled(true); 
    cap.setCapability("requireWindowFocus", true); 
    cap.setCapability("enablePersistentHover", false); 
+0

請將解釋添加到您的答案中。 – Sefa

+0

請添加一些說明 – Sagar007

+0

INITIAL_BROWSER_URL的設置正在爲我工​​作。 –

1

,幫助我的是設置初始化頁面的問題(IE 11 32和64)

private WebDriver getIEDriver() { 
    DesiredCapabilities cap = new DesiredCapabilities(); 
    cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, INIT_PAGE); 

    File file = new File("E:/drivers/IEDriverServer.exe"); 
    System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
    return new InternetExplorerDriver(cap); 
} 
+0

是的,上面的工作適合我。 –

+0

我寫爲:cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL,「https://www.google.com/」); –

0

這裏最好的辦法是做一些調整註冊表:

  1. 進入註冊表編輯(regedit從Windows上運行)

  2. 查找範圍下的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones您的註冊表。在那邊,你應該看到鑰匙編號0-4。在這些鍵0-4下,查找名稱爲2500的值

  3. 對於0-4中的所有鍵,具有相同的值爲2500的數據。例如,對於鍵0,如果值2500的數據爲3十六進制數據),然後將所有其他鍵(1,2,3,4)的值爲2500的數據設爲3。

  4. 現在嘗試運行該腳本。

相關問題