我的Selenium IE实例没有为非管理员用户加载
本文关键字:管理员 用户 加载 Selenium IE 实例 我的 | 更新日期: 2023-09-27 18:08:00
我用c#编写了一个自动登录网页的应用程序。
无论何时管理员运行可执行文件,它都能完美地工作。每当非管理员运行该项目时,就好像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 '调试'
我认为问题是客户端(作为非管理员)无法启动IEDriver.exe
更新:Internet Explorer的保护模式未被禁用,这可以防止以非管理员用户运行IE驱动程序。我可以使用c#代码和IE服务选项禁用它吗?
从您提供的路径来看
D: ' PathToFolder ' Project1 ' bin '调试'
您正在尝试从Visual Studio编译的位置运行驱动程序。这可能行不通的原因有几个。
当您在visual studio中设置和编译代码时,它将创建调试文件夹等并使用当前用户的权限。这意味着该用户和管理员可能能够访问它,但其他人无法访问。或者,如果这是作为管理员完成的,它可能只有管理员可以访问。
通常Visual Studio和其他ide也会有不同的工作目录,并根据您选择的构建选项将exe编译到不同的目录。例如发布与调试。这意味着由exe使用的dll的ect与exe不在同一目录中。当你在visual studio中运行时,这不是问题,因为它会设置正确的工作目录并为你进行分类。在你的情况下,如果这是问题的一部分,它可能不是那么简单。这可能意味着任何必要的dll的ect都可以安装在Admin的路径中,而不是普通用户的路径中。
这可能是路径或权限问题。我建议使用Dependency walker之类的工具来查看exe是什么:http://www.dependencywalker.com/并确保所有用户都可以访问它们。
如果你以用户的身份执行此操作,则程序不能为依赖项漫游器工作,它将显示没有找到的依赖项。