如何在c#中使用相对路径实例化一个新的ChromeDriver ?

本文关键字:一个 ChromeDriver 实例化 路径 相对 | 更新日期: 2023-09-27 17:53:11

使用绝对路径工作,如:

WebDriver = new ChromeDriver(@"C:'Users'<my user>'Documents'<my project>'WebDrivers'Chrome'");

但是因为我也在TFS构建服务器上运行测试,所以我需要它是一个相对路径。

如何在c#中使用相对路径实例化一个新的ChromeDriver ?

将驱动程序添加到您的解决方案中,并在属性窗口中定义要将文件复制到输出目录。

文件属性

在上图中,驱动程序位于资源目录:

/my solution
   /resources
     /chromedriver.exe
     /IEDriverServer.exe

构建完成后,它们将被复制到:

/bin
   /debug
      /resources
        /chromedriver.exe
        /IEDriverServer.exe

当你创建驱动程序时,你可以在bin目录中定义驱动程序的相对路径。

return new ChromeDriver("resources");

我解决了这个问题:

  1. 把chromedriver.exe放到一个已知的路径中(简单的方法是将文件从Windows资源管理器拖到Visual Studio中)
  2. 使用相对路径语法: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 = @"..'..'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());