它可以使用绝对路径,例如:
WebDriver = new ChromeDriver(@"C:\Users\<my user>\Documents\<my project>\WebDrivers\Chrome\");
但是由于我也在 TFS 构建服务器上运行测试,因此我需要它是相对路径。
将驱动程序添加到您的解决方案中,并在属性窗口中定义要将文件复制到输出目录。
上图中,驱动程序位于resources目录中:
/my solution
/resources
/chromedriver.exe
/IEDriverServer.exe
构建后,它们将被复制到:
/bin
/debug
/resources
/chromedriver.exe
/IEDriverServer.exe
创建驱动程序时,您可以定义驱动程序现在相对于 bin 目录的路径。
return new ChromeDriver("resources");
我解决了这个问题:
WebDriver = new ChromeDriver(@"../../");
关键是要找到司机住的正确路径,类似这样:
System.IO.Directory.GetCurrentDirectory();
您可能有所有驱动程序的枚举:
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 = @"..\..\bin\Debug\BrowserDriver";
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());
C# 代码
在代码中:创建此方法以返回您的驱动程序: 私人 IWeDriver launchChromeBrowserDriver(string urlString){
字符串exePath = AppDomain.CurrentDomain.BaseDirectory;
字符串 driverFolder = Path.Combine(exePath,@"Drivers")
IWebDriver 驱动程序 = new ChromeDriver(driverFolder);
driver.Url = urlstring; (传递参数)
driver.Navigate().GoToUrl(driver.Url);
返程司机 }
这适用于调试、发布以及使用 ClickOnce 的发布。
转到项目 >> 项目名称属性 >> 发布选项卡
单击“更新...”下方的“选项”,然后选择“部署”并取消选中 - 使用“.deploy”文件扩展名。
现在相对路径应该适用于所有场景