【发布时间】:2023-03-10 11:40:02
【问题描述】:
我正在处理一个测试自动化项目,需要在浏览器中进行 UI 测试。对于这个项目,我设置了一个带有以下包的 .NET Core 3.1 项目:
<PackageReference Include="FluentAssertions" Version="5.10.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.8" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.TestPlatform.TestHost" Version="16.8.3" />
<PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="87.0.4280.8800" />
<PackageReference Include="Selenium.WebDriver.GeckoDriver" Version="0.27.0" />
<PackageReference Include="Selenium.WebDriver.IEDriver" Version="3.150.1.2" />
<PackageReference Include="SpecFlow" Version="3.5.14" />
<PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.5.14" />
<PackageReference Include="SpecRun.SpecFlow" Version="3.5.22" />
当我尝试运行我的任何测试时,我收到以下错误:
chromedriver.exe 文件不存在于当前目录或 PATH 环境变量的目录中。驱动可以在http://chromedriver.storage.googleapis.com/index.html下载。
但是 chromedriver 包含在 Selenium.WebDriver.ChromeDriver 包中。它应该在构建过程中被复制到 bin 文件夹中,所以我检查了该文件夹并且它存在。
所以我认为当前目录不是 bin 文件夹而是其他文件夹,所以我更改了代码并将当前目录作为参数传递给 chromedriver,如下所示:
...
var driver new ChromeDriver(System.IO.Directory.GetCurrentDirectory());
...
现在我收到以下错误:
文件 C:\path\to\project\TestResults\chromedriver.exe 不存在。驱动可以在http://chromedriver.storage.googleapis.com/index.html下载
表示当前目录不是bin文件夹,而是我测试结果的输出文件夹。
如何更改此行为以使其自动在正确的文件夹中查找?
顺便说一句:我发现the following solution 有类似的问题。但是,此解决方案依赖于硬编码路径,完整路径/驱动程序版本或平台/配置。这不是一个选项,因为我打算在不同的环境中使用相同的代码。
【问题讨论】:
标签: selenium asp.net-core selenium-webdriver selenium-chromedriver specflow