IEDriverServer.exe 被构建为一个小的、简单的可执行文件,它具有一个 .dll,其中 IE 驱动程序的真实代码作为资源嵌入在 .exe 中。要使用这个 .dll,可执行文件必须在某处提取 .dll,以便它可以调用 Windows LoadLibrary
API 来加载并随后执行 .dll 的代码。默认情况下,提取是在临时目录中完成的。如果不生成日志文件来调查问题,我们可以推测 .dll 要么没有被正确提取,要么一旦提取,调用LoadLibrary
失败。
幸运的是,IE 驱动程序提供了解决此问题的方法。如果您将--extract-path="path\to\extract\dll\to"
命令行参数作为命令行参数传递给 IEDriverServer.exe,您将能够明确指定要用于提取的目录。请参阅有关您的语言绑定的文档,以了解如何以编程方式传递此命令行参数。
例如,使这项工作适用于 Java,代码将如下所示:
// WARNING: Entirely untested code below! Was written from memory without
// the benefit of an IDE. May not work correctly or even compile without
// modification.
// Assume "location" is a properly instantiated java.io.File containing
// the location of IEDriverServer.exe.
InternetExplorerDriverService service = new InternetExplorerDriverService.Builder()
.withExtractPath(location)
.build();
WebDriver driver = new InternetExplorerDriver(service);
另一种选择可能是手动启动 IEDriverServer.exe,并使用您的语言绑定RemoteWebDriver
类连接到它。这意味着您对可执行进程的生命周期负责,但这可能是您获得所需行为的一种方式。