我有一个在Windows 7操作系统上运行Team City Build代理的Windows服务。
此代理触发NUnit测试,这些测试使用Selenium IE Web驱动程序执行一系列测试。
要使Selenium IE Web驱动程序正常工作,需要将所有区域的保护模式设置为相同的值(打开或关闭保护模式)。
问题是本地系统帐户的默认设置无效(某些区域在受保护模式下运行,其他区域未运行)。
任何人都可以告诉我如何更改所有用户或本地系统帐户用户的保护模式设置吗?
答案 0 :(得分:10)
这是解决方案(我已经去过互联网的每个角落以获得这个):
启动RegEdit
并转到此键:
HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
在我的计算机(Windows 7)上,本地系统帐户为S-1-5-18
。对于所有版本的Windows,这可能是相同的,但我不知道。
在该注册表项中,还有另外五个键1,2,3,4和5 - 每个键代表一个区域。
对于每个区域,如果存在名称为“2500”的DWORD值,请将其值设置为0以关闭保护模式。请注意,如果不存在,则不必添加它。
值“2500”应该控制勾选框“启用保护模式”。
UPDATE(来自匿名用户):
执行相同操作的图形方式是确保“交互式服务检测”服务(UI0Detect)正在运行(请注意,Windows 8/2012及更高版本需要正确设置HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices
注册表项才能正常运行要显示的弹出窗口获取psexec
并运行
psexec -si 0 "C:\Program Files\Internet Explorer\iexplore.exe"
在弹出窗口中单击查看消息,然后在Internet Explorer中切换屏幕后转到工具 - >互联网选项|安全并检查每个区域的安全级别。
快乐的UI测试!
答案 1 :(得分:0)
你可以尝试禁用UAC,它也会为系统中的所有用户禁用保护模式。
答案 2 :(得分:0)
解决方案的最佳描述是这样的 https://stackoverflow.com/a/30242504/1371989
答案 3 :(得分:-1)
IE WebDriver上有一个设置,告诉它忽略保护模式设置。从设置的名称来看,它可能会引入一些“不稳定性”,但我对这种方法没有任何问题:
var options = new InternetExplorerOptions();
// avoid the "Protected Mode must be set to the same value (enabled or disabled) for all zones" error
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
return new InternetExplorerDriver(options);