异常(org.openqa.selenium.NoSuchWindowException):在InternetExplorer中将SeleniumWebDriver与Java一起使用
在使用Selenium Webdriver使用IE进行自动化时,我能够打开URL,但在该页面上查找元素会引发以下异常: org.openqa.selenium.NoSuchWindowException:在上找不到元素 关闭窗口(警告:服务器未提供任何堆栈跟踪) (资料) 我尝试了异常(org.openqa.selenium.NoSuchWindowException):在InternetExplorer中将SeleniumWebDriver与Java一起使用,java,selenium,internet-explorer,exception,selenium-webdriver,Java,Selenium,Internet Explorer,Exception,Selenium Webdriver,在使用Selenium Webdriver使用IE进行自动化时,我能够打开URL,但在该页面上查找元素会引发以下异常: org.openqa.selenium.NoSuchWindowException:在上找不到元素 关闭窗口(警告:服务器未提供任何堆栈跟踪) (资料) 我尝试了driver.switchTo.window()方法,但不起作用。 我已经找了好几个小时了,什么也没找到 代码如下: publicstaticselenium; 公共静态void main(字符串参数[]){ 试一试{
driver.switchTo.window()
方法,但不起作用。
我已经找了好几个小时了,什么也没找到
代码如下:
publicstaticselenium;
公共静态void main(字符串参数[]){
试一试{
System.setProperty(
“webdriver.ie.driver”,
“D:\\Driver\\IEDriverServer\u Win32\u 2.32.3\u latest\\IEDriverServer.exe”);
DesiredCapabilities capab=DesiredCapabilities.internetExplorer();
capab.setCapability(
InternetExplorerDriver.通过忽略安全域引入片状,
正确的);
WebDriver=newinternetexplorerdriver(capab);
驱动程序。获取(“http://www.google.com");
findElement(By.xpath(“./*[@id='addlang']]]/a[1]”)。单击();
}捕获(例外e){
e、 printStackTrace();
}
}
删除功能通过忽略\u安全\u域来引入\u片状\u
并手动将所有区域的IE保护模式设置设置为相同
资料来源:
帮助我的问题是设置init page(即32和64)
这里的最佳选择是对注册表进行一些调整:
regedit
从windows运行)HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones
。在那边,你应该看到0-4号钥匙。在这些键0-4下,查找名为2500的值请注意下面的答案,并补充说,该功能确实会导致测试不稳定,在删除该设置之前,甚至没有必要诊断您的问题。我还恳请您不要使用谷歌进行测试(除非您有需要,我会对它感兴趣,因为我会下大赌注,您不一定需要在谷歌的UI中进行搜索,这是有办法的)。这是一个非常复杂的页面。请使用更简单的页面。谢谢Arran的回复。我也尝试过使用谷歌以外的页面,但也出现了同样的错误。然而,我想我已经理解了这个问题。它是通过设置“忽略安全域”功能来引入“片状”。再次感谢..我在使用IE 11时遇到了同样的异常。我没有使用任何功能,但不幸的是我得到了这个异常。driver.switchTo.window()不是解决这个问题的完美代码。谢谢你的回复。是的,我也尝试手动设置,但我在办公环境中工作,我没有管理员权限,因此我需要通过忽略安全域来设置“引入”flakines,否则将无法工作。还有其他方法吗?你应该问你的办公室管理员,为了让你的自动化测试正常工作,你需要更改它,这应该不是那么难。@Amit:解决方法是能力,但是,如果这不起作用,那么解决方法将是与你的经理交谈。如果您无法控制自己的测试环境,他/她会有什么期望?谢谢大家的回复。他们真的很有帮助。请为您的答案添加解释。请添加一些说明。请设置IE的保护模式,而不是使用cap.setCapability(InternetExplorerDriver.Introduction\u flakines\u通过忽略\u SECURITY\u DOMAINS,true);我写的是:cap.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL)”;这与所需的配置()一起对我有效。
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);
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);
}