首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用IEDriverServer时出现“加载库失败”错误

调用IEDriverServer时出现“加载库失败”错误
EN

Stack Overflow用户
提问于 2013-07-19 05:33:48
回答 4查看 4.4K关注 0票数 1

我使用Selenium WebDriver 2.25在不同版本的Windows Explorer上测试我们的应用程序,这意味着在不同的机器上运行测试。

虽然使用IE8测试应用程序运行得很好,但在尝试使用IE7在工作站上运行测试时,我得到了一个奇怪的错误。它运行的是装有Java6的Windows XP Service Pack2。当我尝试运行IEDriverServer_Win32可执行文件时,我得到以下错误:

代码语言:javascript
复制
Failed to load the library from temp directory: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp

我遗漏了什么?

EN

回答 4

Stack Overflow用户

发布于 2013-07-20 04:40:10

IEDriverServer.exe被设计为一个小的、简单的可执行文件,其中包含一个.dll,其中包含IE驱动程序的实际代码,并作为资源嵌入到.exe中。要使用此.dll,可执行文件必须将.dll提取到某个位置,以便它可以调用Windows LoadLibrary API来加载并随后执行.dll的代码。默认情况下,提取是在temp目录中完成的。如果不生成日志文件来查看问题,我们可以推测.dll没有正确提取,或者一旦提取,对LoadLibrary的调用就失败了。

幸运的是,IE驱动程序提供了解决此问题的方法。如果您将--extract-path="path\to\extract\dll\to"作为命令行参数传递给IEDriverServer.exe,您将能够显式地指定用于提取的目录。请参阅您的语言绑定的文档,了解如何以编程方式传递此命令行参数。

例如,要使此代码适用于Java,代码将如下所示:

代码语言:javascript
复制
// 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类连接到它。这意味着您要对可执行进程的生命周期负责,但这可能是您获得所需行为的一种方式。

票数 2
EN

Stack Overflow用户

发布于 2013-07-29 23:05:55

我实际上遇到了一个类似的问题,它无法解压到临时目录,我所做的就是进入IEDriver解压DLL的文件夹,并删除了该文件夹中与Selenium相关的所有内容。

所以对我来说,它是C:\Users\usnm\AppData\Local\Temp,有很多像webdriver_blahblah120398405.tmp这样的文件,还有很多命名类似的文件夹。当我把它们全部移除后,我的程序又开始工作了。因此,对于您来说,它应该是C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp

当然,我们的错误略有不同(我使用的是Selenium 2.33)。我的错误是“提取失败”,而不是“加载失败”。

票数 0
EN

Stack Overflow用户

发布于 2015-02-26 22:06:02

在某些系统中,防病毒软件或其他保护软件会阻止运行exe文件,在这种情况下,会阻止从临时文件夹加载dll库。

在启动selenium节点时,添加一个额外的参数并指定当前目录的提取路径(确保当前目录可由用户写入,并且不需要提升的权限)。例如,如果您的节点位于C:\ IEDriverServer.exe,则

代码语言:javascript
复制
java -jar selenium-server-standalone.jar -role node ..... -Dwebdriver.ie.driver.extractpath=C:\node

这应该可以解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17734331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档