只要Admin运行可执行文件,它就能完美运行.每当非管理员运行项目时,就好像IEDriver.exe没有启动一样.从组策略启动IEDriver.exe没有任何限制.
private IWebDriver _driver; public void SetUp() { InternetExplorerOptions options = new InternetExplorerOptions(); options.EnsureCleanSession = true; options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; options.RequireWindowFocus = true; options.EnablePersistentHover = false; var service = InternetExplorerDriverService.CreateDefaultService(); service.LibraryExtractionPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); //service.HideCommandPromptWindow = true; _driver = new InternetExplorerDriver(service,options); }
当我取消注释LibraryExtractionPath时,IEDriver不会启动.
当我调试代码.
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
指向正确的位置
D:\PathToFolder\Project1\bin\Debug\
我认为问题是客户端(非管理员)无法启动IEDriver.exe
更新:Internet Explorer的保护模式未禁用,which can prevent running IE Driver as a non-admin user.我可以使用C#代码和IE服务选项禁用它吗?
解决方法
D:\PathToFolder\Project1\bin\Debug\
您正尝试从Visual Studio编译的位置运行驱动程序.有几个原因可能导致这种情况无效.
当您在visual studio中设置和编译代码时,它将创建调试文件夹ect并使用当前用户的权限.这意味着该用户和管理员可以访问它但不能访问其他人.或者,如果这是作为管理员完成的,则只有管理员才能访问.
安静的Visual Studio和其他IDE也会有不同的工作目录,并根据您选择的构建选项将exe编译到不同的目录中.例如发布与调试.这意味着exe使用的dll与exe不同.当你在visual studio里面运行时,这不是一个问题,因为它设置了正确的工作目录并为你排序.在你的情况下,如果这是问题的一部分,它可能不是那么简单.它可能意味着任何必需的DLL都可以安装在管理员的路径中,但不适用于普通用户.
这可能是一个路径或权限问题.我建议使用像Dependency walker这样的东西来查看exe的内容:http://www.dependencywalker.com/并确保所有用户都可以访问它们.