【问题标题】:.NET Core Selenium WebDriver not found.NET Core Selenium WebDriver 未找到
【发布时间】:2019-03-06 22:20:50
【问题描述】:

我已将 NUnit 测试项目从 .NET Framework 转换为 .NET Core。当我尝试使用 Visual Studio 执行 Selenium 测试时,我看到了这个错误:

OpenQA.Selenium.DriverServiceNotFoundException : chromedriver.exe 文件在当前目录或上一个目录中不存在 PATH 环境变量。驱动程序可以在以下位置下载 http://chromedriver.storage.googleapis.com/index.html.

我已包含 Selenium.WebDriver.ChromeDriver Nuget 包,chromedriver.exe 出现在输出 bin 文件夹中。无需将 ChromeDriver url 设置为环境变量,如何让 Visual Studio 找到该文件?

[Test]
public void Test()
{
   var driver = new ChromeDriver();
   driver.Url = "http://www.google.com";
}

【问题讨论】:

  • 虽然我不想将其作为解决方案,但即使将 chromedriver.exe 添加到 PATH 变量也不起作用。
  • 如何实例化驱动程序?发布您的相关代码。
  • 我相信手动将其安装到您的 PATH 中比依赖第 3 方 NuGet 作者包更安全。或者从 Google 下载 exe 并手动将其放入您的项目中。您可以尝试使用new ChromeDriver('.'),它将查看执行程序的 CWD。​​span>

标签: selenium .net-core selenium-chromedriver


【解决方案1】:

这是因为在 .Net Core 中,NuGet 包是从全局位置加载的,而不是 .NET Framework 项目中的包文件夹。

你可以使用以下,它会正常运行:

ChromeDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

【讨论】:

    【解决方案2】:

    这对我有用

            var currentDirectory = Directory.GetCurrentDirectory();
            var driverService = ChromeDriverService.CreateDefaultService(currentDirectory);        
            driverService.Start();
            var driver = new ChromeDriver(driverService);
    

    【讨论】:

      【解决方案3】:

      当我遇到问题时我所做的是设置一个 var:

      var driverDirectory = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);
      

      然后在创建时将其传递给 ChromeDriver。

      【讨论】:

      • 这会将错误更改为OpenQA.Selenium.WebDriverException : Cannot start the driver service on http://localhost:49416/ TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
      • 没有看到代码就很难确定问题所在。请发布您的代码。
      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2021-06-30
      • 1970-01-01
      • 2016-08-13
      相关资源
      最近更新 更多