Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异常(org.openqa.selenium.NoSuchWindowException):在InternetExplorer中将SeleniumWebDriver与Java一起使用_Java_Selenium_Internet Explorer_Exception_Selenium Webdriver - Fatal编程技术网

异常(org.openqa.selenium.NoSuchWindowException):在InternetExplorer中将SeleniumWebDriver与Java一起使用

异常(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(字符串参数[]){ 试一试{

在使用Selenium Webdriver使用IE进行自动化时,我能够打开URL,但在该页面上查找元素会引发以下异常:

org.openqa.selenium.NoSuchWindowException:在上找不到元素 关闭窗口(警告:服务器未提供任何堆栈跟踪) (资料)

我尝试了
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的值

  • 对于0-4之间的所有键,值2500的数据相同。例如,对于键0,如果值2500的数据为3(十六进制数据),则将所有其他键(1,2,3,4)的值2500的数据设为3

  • 现在尝试运行脚本


  • 请注意下面的答案,并补充说,该功能确实会导致测试不稳定,在删除该设置之前,甚至没有必要诊断您的问题。我还恳请您不要使用谷歌进行测试(除非您有需要,我会对它感兴趣,因为我会下大赌注,您不一定需要在谷歌的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);
     }