【问题标题】:Selenium: org.openqa.selenium.NoSuchWindowException: Currently focused window has been closedSelenium:org.openqa.selenium.NoSuchWindowException:当前焦点窗口已关闭
【发布时间】:2018-05-03 11:29:06
【问题描述】:
  1. System.setProperty("webdriver.ie.driver", "D:\Selenium\jars\IEDriverServer\IEDriverServer.exe");
  2. WebDriver 驱动程序 = new InternetExplorerDriver();
  3. driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  4. driver.get("http://the-internet.herokuapp.com");
  5. driver.findElement(By.linkText("忘记密码")).click();
  6. Thread.sleep(3000);
  7. driver.findElement(By.id("email")).sendKeys("testmail@mail.com");

当我运行上面的代码时,它在 chrome 和 firefox 上运行良好,但是当我使用 IE 运行时,它在运行 第 7 步时抛出以下错误不明白,它在 IE 中不起作用.

谁能帮我解决这个问题。提前致谢

2017 年 11 月 20 日下午 2:58:39 org.openqa.selenium.remote.ErrorCodes toStatus 信息:HTTP 状态:“404”->“没有这样的窗口”的 JSON 状态映射不正确(预期为 400)

org.openqa.selenium.NoSuchWindowException:当前焦点窗口已关闭。 构建信息:版本:'3.6.0',修订:'6fbf3ec767',时间:'2017-09-27T15:28:36.4Z' 系统信息:主机:'ML-SIVAKUMARS-P',ip:'192.168.12.159',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version: '1.8.0_121' 驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver 能力 [{proxy=Proxy(), acceptInsecureCerts=false, browserVersion=11, se:ieOptions={nativeEvents=true, browserAttachTimeout=0, ie.ensureCleanSession=false, elementScrollBehavior=0, enablePersistentHover=true, ie.browserCommandLineSwitches=, ie .forceCreateProcessApi=false, requireWindowFocus=false, initialBrowserUrl=http://localhost:2761/, ignoreZoomSetting=false, ie.fileUploadDialogTimeout=3000, ignoreProtectedModeSettings=false}, timeouts={implicit=0, pageLoad=300000, script=30000}, browserName=internet explorer , pageLoadStrategy=normal, javascriptEnabled=true, platformName=WINDOWS, setWindowRect=true, platform=WINDOWS}] 会话 ID:24a4d291-482e-4399-98fc-f2037c4da5bb *** 元素信息:{Using=id, value=email}

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:185)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:120)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:586)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:356)
at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:402)
at org.openqa.selenium.By$ById.findElement(By.java:218)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)
at com.org.learning.tests.TestDayTwo.firstTest(TestDayTwo.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

【问题讨论】:

    标签: selenium


    【解决方案1】:

    从昨天开始,我一直在为同样的问题苦苦挣扎,终于让我的测试开始工作了。
    检查您是否拥有 InternetExplorerDriver 的所有 required configurations。对我来说,这是我最终测试的保护模式设置,即使我使用的是 Win 10。
    希望它也能帮助你。

    【讨论】:

    • 非常感谢西葫芦。它通过设置工作。 对于 64 位 Windows 安装,密钥为 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在,则应创建它。重要提示:在此键中,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。。你节省了我的时间,再次感谢
    • 如果保护模式设置不同,应该会出现以下错误:org.openqa.selenium.SessionNotCreatedException:启动 Internet Explorer 时出现意外错误。并非所有区域的保护模式设置都相同。必须将所有区域的启用保护模式设置为相同的值(启用或禁用)。
    • 谢谢你
    【解决方案2】:

    有两种方式:

    方式一:设置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\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。 p>

    对于 64 位 Windows: 密钥是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。

    注意:请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在则应创建它。重要提示:在此键中,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。

    更多详情您可以访问:https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

    【讨论】:

      【解决方案3】:

      在我的情况下,由于 URL“/”最后缺少斜杠而出现错误

      实际是http://example.com/ 但我通过http://example.com

      【讨论】:

        【解决方案4】:

        共有三个设置:

        1. 缩放级别设置为 100%
        2. 未选中 Internet 选项 --> 安全性--> 对于 Internet 和受信任的站点
        3. 未选中“启用保护模式”

        【讨论】:

          【解决方案5】:

          在 Internet Explorer 中启用保护模式后,我的错误已解决。

          设置--> 互联网选项--> 安全性--> 勾选启用所有区域的保护模式。

          【讨论】:

          • 就我而言,它已经启用。我禁用它并重新启用它以使其工作
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-12
          • 2011-09-23
          • 1970-01-01
          • 2018-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多