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. 现在尝试运行该脚本。

相关问题