sof*_*fun 7 c# selenium internet-explorer
我在C#中编写了一个应用程序来自动登录到网页.
只要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);
}
Run Code Online (Sandbox Code Playgroud)
当我取消注释LibraryExtractionPath时,IEDriver不会启动.
当我调试代码.
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Run Code Online (Sandbox Code Playgroud)
指向正确的位置
d:\ PathToFolder\PROJECT1\BIN \调试\
我认为问题是客户端(非管理员)无法启动IEDriver.exe
更新:未禁用Internet Explorer的保护模式,这可能会阻止以非管理员用户身份运行IE驱动程序.我可以使用C#代码和IE服务选项禁用它吗?
小智 2
从您提供的路径来看
D:\PathToFolder\Project1\bin\Debug\
您正尝试从 Visual Studio 编译驱动程序的位置运行该驱动程序。这可能行不通的原因有几个。
当您在 Visual Studio 中设置和编译代码时,它将创建调试文件夹 ect 并使用当前用户的权限。这意味着该用户和管理员可以访问它,但其他人不能访问。或者,如果这是作为管理员完成的,则可能只有管理员可以访问。
通常,Visual Studio 和其他 IDE 也会有不同的工作目录,并根据您选择的构建选项将 exe 编译到不同的目录中。例如发布与调试。这意味着exe使用的dll的ect与exe不在同一目录中。当您在 Visual Studio 中运行时,这不是问题,因为它设置了正确的工作目录并为您排序。就您而言,如果这是问题的一部分,那么可能就不那么简单了。这可能意味着任何必需的 dll 等都可能被安装并位于管理员的路径中,但普通用户则不然。
这可以归结为这可能是路径或权限问题。我建议使用类似 Dependency walker 的工具来查看 exe 的内容:http://www.dependencywalker.com/并确保所有用户都可以访问它们。
如果您以用户身份执行此操作,则该程序不适用于依赖项遍历器,它将向您显示未找到哪些依赖项。