我的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服务选项禁用它吗?

我的Selenium 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/并确保所有用户都可以访问它们。

如果你以用户的身份执行此操作,则程序不能为依赖项漫游器工作,它将显示没有找到的依赖项。