这与Selenium上的my other recent question有关(该问题与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
this question的已接听答案表明,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
上运行时,这个只会发生(这是一个问题,因为那是我打算完成大部分测试的地方)。
答案 0 :(得分:4)
我发现将InitialBrowserUrl
功能设置为您要导航到的起始网址,与IntroduceInstabilityByIgnoringProtectedModeSettings = true
配对,对我有用。
var ieOptions = new InternetExplorerOptions()
{
InitialBrowserUrl = <your-starting-url>
IntroduceInstabilityByIgnoringProtectedModeSettings = true,
...
};
不幸的是,我没有理由说明为什么会这样,所以这个&#34;修复&#34;可能只是轶事...
您可以尝试其他一些解决方案(来自官方参考):
必需的配置
- IEDriverServer exectuable必须为downloaded并放在PATH。
- 在Windows Vista或Windows 7上的IE 7或更高版本中,必须将每个区域的保护模式设置设置为相同的值。只要每个区域的值相同,该值就可以打开或关闭。要设置保护模式设置,请选择&#34; Internet选项...&#34;从“工具”菜单中,单击“安全”选项卡。对于每个区域,选项卡底部都会显示一个复选框,标记为&#34;启用保护模式&#34;。
- 此外,&#34;增强保护模式&#34; IE 10及更高版本必须禁用。此选项位于“Internet选项”对话框的“高级”选项卡中。
- 浏览器缩放级别必须设置为100%,以便可以将本机鼠标事件设置为正确的坐标。
- 对于IE 11 only ,您需要在目标计算机上设置一个注册表项,以便驱动程序可以维护与其创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的密钥是
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
。对于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