如何使用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