这与我最近关于 Selenium 的另一个问题有关(那个问题是关于 Firefox 特定的问题,这个问题是关于 IE 特定的问题)。
基本上,当我运行以下代码时
ieDriver.Navigate().GoToUrl("http://localhost:51282");
IWebElement linkToAboutPage = ieDriver.FindElement(By.Id("test"));
linkToAboutPage.Click();
为了模拟点击链接,它成功导航到页面,但是当它尝试检索实际元素时,我得到以下异常:
An exception of type 'OpenQA.Selenium.NoSuchWindowException' occurred in WebDriver.dll but was not handled in user code
Additional information: Unable to find element on closed window
这个问题的公认答案表明,IE 安全设置中的“启用保护模式”应该全部选中或全部取消选中。事实上,当我查看这些设置时,未选择 Intranet 的“启用保护模式”,但未选择其他设置:
不幸的是,如屏幕截图所示,这是由我的公司 IT 部门管理的,我不确定我能否说服他们让我更改设置。我也无法按照其他一些答案建议的方式编辑我的注册表(可能是由于缺乏管理权限)。
我见过的其他一些解决方案包括设置IntroduceInstabilityByIgnoringProtectedModeSettings
为true
、提供一个InitialBrowserUrl
或设置EnsureCleanSession
为true
。如下所示,我目前正在做所有这些事情:
var ieOptions = new InternetExplorerOptions()
{
InitialBrowserUrl = "http://www.google.com",
IntroduceInstabilityByIgnoringProtectedModeSettings = true,
IgnoreZoomLevel = true,
EnableNativeEvents = true,
EnsureCleanSession = true
};
ieDriver = new InternetExplorerDriver(ieOptions);
ieDriver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 0, 10);
但是,我仍然遇到完全相同的问题。
还有什么我可以尝试的不涉及我为策略例外而对公司 IT 进行窃听的方法吗?
也许很重要的是,这只发生在我运行时localhost
(这是一个问题,因为我打算在那里进行大部分测试)。