Chromedriver在specflow + selenium . net Core项目中缺失 &



我有一个需要在浏览器中进行UI测试的测试自动化项目。对于这个项目,我设置了一个。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" />

当我尝试运行任何测试时,我得到以下错误:

当前目录或PATH环境变量下的目录中不存在chromedriver.exe文件。驱动程序可从http://chromedriver.storage.googleapis.com/index.html下载。

然而,chromedriver包含在Selenium.WebDriver.ChromeDriver包中。它应该在构建过程中复制到bin文件夹,所以我检查了文件夹,它存在。

所以我认为当前目录不是bin文件夹而是其他文件夹,所以我改变了我的代码,并将当前目录作为参数传递给chromedriver,如下所示:

...
var driver new ChromeDriver(System.IO.Directory.GetCurrentDirectory());
...

现在我得到以下错误:

文件C:pathtoprojectTestResultschromedriver.exe不存在。驱动程序可在http://chromedriver.storage.googleapis.com/index.html

下载。

表示当前目录不是bin文件夹,而是我的测试结果的输出文件夹。

如何更改此行为,使其自动查找正确的文件夹?

对于一个类似的问题,我找到了如下的解决方法。然而,此解决方案依赖于硬编码路径,完整路径/驱动程序版本或平台/配置。这不是一个选项,因为我的意图是在不同的环境中使用相同的代码。

您正在使用SpecFlow+ Runner,它默认使用进程隔离来分离线程。因此,工作目录不是输出目录。

你有两个选择:

  1. 通过API从SpecFlow+ Runner获取文件夹

我们有一个API来获取输出文件夹。通过上下文注入获取一个TestRunContext的实例,并使用TestDirectory属性(https://docs.specflow.org/projects/specflow-runner/en/latest/Usage/SpecFlow-Runner-APIs.html#string-testdirectory-get)。

  1. 切换到共享应用域

如果您不需要在测试线程之间进行隔离,我才会这样做。

输入你的Default.srProfile

<Environment testThreadIsolation="SharedAppDomain" />

整个文件看起来应该像这样:https://github.com/SpecFlowOSS/Streaming-Projects/blob/main/CommunityContentSubmissionPage/CommunityContentSubmissionPage.Specs/Default.srprofile


全面披露:我是SpecFlow和SpecFlow+的社区经理

相关内容

  • 没有找到相关文章

最新更新