使用绝对路径工作,如:
WebDriver = new ChromeDriver(@"C:Users<my user>Documents<my project>WebDriversChrome");
但是因为我也在TFS构建服务器上运行测试,所以我需要它是一个相对路径。
将驱动程序添加到您的解决方案中,并在属性窗口中定义要将文件复制到输出目录。
文件属性在上图中,驱动程序位于资源目录:
/my solution
/resources
/chromedriver.exe
/IEDriverServer.exe
构建完成后,它们将被复制到:
/bin
/debug
/resources
/chromedriver.exe
/IEDriverServer.exe
当你创建驱动程序时,你可以在bin目录中定义驱动程序的相对路径。
return new ChromeDriver("resources");
我解决了这个问题:
- 把chromedriver.exe放到一个已知的路径中(简单的方法是将文件从Windows资源管理器拖到Visual Studio中)
- 使用相对路径语法:
WebDriver = new ChromeDriver(@"../../");
关键是找到驱动程序所在的正确路径,像这样:
System.IO.Directory.GetCurrentDirectory();
您可以为所有驱动程序设置enum:
public enum Drivers
{
Chrome,
Firefox,
Safari,
Edge,
IE
}
public static IWebDriver GetDriver(Drivers driver)
{
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// below is my location where I copied all drivers like chromedriver.exe
var relativePath = @"....binDebugBrowserDriver";
var chromeDriverPath = Path.GetFullPath(Path.Combine(outPutDirectory,relativePath));
// return this driver , just debug this code and check the "outPutDirectory" path
return new ChromeDriver(chromeDriverPath);
}
这在java中为我工作:
System.setProperty(“webdriver.chrome.driver”,
new File(“./src/test/resources/drivers/chromedriver.exe”).getCanonicalPath());