如何使用C#使用Selenium WebDriver实例化InternetExplorerDriver

new InternetExplorerDriver(); 

但我可以看到exception如下:

 OpenQA.Selenium.DriverServiceNotFoundException was unhandled by user code HResult=-2146233088 Message=The IEDriverServer.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at http://code.google.com/p/selenium/downloads/list. Source=WebDriver StackTrace: at OpenQA.Selenium.DriverService.FindDriverServiceExecutable(String executableName, Uri downloadUrl) at OpenQA.Selenium.IE.InternetExplorerDriverService.CreateDefaultService() at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(InternetExplorerOptions options) at OpenQA.Selenium.IE.InternetExplorerDriver..ctor() at Accelrys.CommonTestFramework.WebActions.WebActionLibrary.CreateSeleniumDriver() 

正如例外所述,您需要根据您拥有的IE下载32位或64位IEDriverServer,并确保它在我们的路径中可用。 也就是说,当您在命令行上键入IEDriverServer.exe时,它应该被解析。 试试吧

在创建对象之前,将这些行添加到代码中。

  System.setProperty("webdriver.ie.driver", "E:\\path where your IEDriverServer is located\\IEDriverServer.exe"); 

您可以从这里下载IEDriverServer.exe文件。

在使用C#时,您可以使用以下代码。

 private const string IE_DRIVER_PATH = @"C:\PathTo\IEDriverServer"; var driver = new InternetExplorerDriver(IE_DRIVER_PATH, options); 

您需要安装IEDriverServer并使其成为项目的一部分。

本帖包含下载链接以及有关使其成为项目一部分的一些其他信息。

.NET绑定不扫描可执行文件的%PATH%环境变量。

https://groups.google.com/forum/?fromgroups#!topic/webdriver/EvTyEPYchxE

因此,将IEDriverServer放在.NET的%PATH%中是行不通的。

使用非官方的NuGet版本与捆绑的IE驱动程序(它放在Packages-dir中并从测试项目中引用),或者自己将其与项目捆绑在一起,并将exe标记为Copy,如果在首选项下更新 。 然后将相对路径添加到InternetExplorerDriver的构造函数中。

您可以在构造函数的重载中传递路径到IEDriverServer

 namespace OpenQA.Selenium.IE // // Summary: // Initializes a new instance of the OpenQA.Selenium.IE.InternetExplorerDriver class // using the specified path to the directory containing IEDriverServer.exe. // // Parameters: // internetExplorerDriverServerDirectory: // The full path to the directory containing IEDriverServer.exe. public InternetExplorerDriver(string internetExplorerDriverServerDirectory); 

所以

 new InternetExplorerDriver("..\.."); // if it was two folders up