C# 如何在GitHub操作中运行Selenium测试

C# 如何在GitHub操作中运行Selenium测试,c#,selenium,azure-devops,github-actions,C#,Selenium,Azure Devops,Github Actions,我试图找到在GitHub操作中运行Selenium测试的等效命令。在Azure DevOps中,我会使用此YAML运行“Visual Studio测试”: 在GitHub操作中,等效任务是什么?GitHub runner/agent中似乎不存在VsTest.Console.exe,因此答案可能涉及安装-但显然我希望避免这种情况,因为这会严重降低每个构建的速度。感谢@Eldar为我指明了正确的方向。基本答案是(在Windows runner中运行): 使用调用表达式似乎有助于解决我收到的一些初始错

我试图找到在GitHub操作中运行Selenium测试的等效命令。在Azure DevOps中,我会使用此YAML运行“Visual Studio测试”:


在GitHub操作中,等效任务是什么?GitHub runner/agent中似乎不存在VsTest.Console.exe,因此答案可能涉及安装-但显然我希望避免这种情况,因为这会严重降低每个构建的速度。

感谢@Eldar为我指明了正确的方向。基本答案是(在Windows runner中运行):

使用调用表达式似乎有助于解决我收到的一些初始错误。完整的yaml及其上下文可在以下位置查看:

注意:为了找到vstest.console.exe文件,我使用这个yaml搜索GitHub操作运行程序。存在已锁定的文件夹,因此如果搜索根C:文件夹,则会引发错误。通过上面提供的内容,我能够确定Visual Studio的根文件夹并在其中搜索vstest.console.exe:

- name: search for visual studio test runner
  run: |
    $var1 = Get-Childitem -Path "C:\Program Files (x86)\Microsoft Visual Studio" -Filter "vstest.console.exe" -Recurse | select -ExpandProperty FullName
    Write-Host "VS test runner: $var1"
  shell: powershell

由于市场上提供的操作,这一点现在变得简单多了

它仍然需要在Windows代理上运行,但YAML行的数量显著减少

下面的代码段假设一个名为“functional tests”的工件包含Selenium测试的编译资产(DLL、chromedriver.exe等),然后该工件被放入“/functional tests/”中

-name:将VSTest.console.exe添加到路径
用途:darenm/Setup-VSTest@v1
-名称:运行功能测试
运行:vstest.console.exe“功能测试\.dll”

我的经验是,如果在作业级别进行设置,则会通过
vstest.console.exe
自动获取这些设置。这可能适用于在步骤或工作流级别设置它们,但我尚未对此进行测试。

似乎跑步者已经获得Visual Studio Enterprise检查此功能,谢谢,我似乎在C:\Program Files(x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe中找到了它。我将尝试一下,看看它是否有效。顺便说一句,我是通过使用搜索代理找到它的(我将在最后清理)-名称:搜索visual studio测试运行程序运行:|$var1=Get Childitem-Path“C:\Program Files(x86)\Microsoft visual studio”-筛选器“vstest.console.exe”-Recurse | select-ExpandProperty全名写主机“VS test runner:$var1”shell:powershell太好了,你解决了。你可以接受它作为答案。
- name: Functional Tests
  run: |
    $vsTestConsoleExe = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\IDE\\Extensions\\TestPlatform\\vstest.console.exe"
    $targetTestDll = "functionaltests\FeatureFlags.FunctionalTests.dll"
    $testRunSettings = "/Settings:`"functionaltests\test.runsettings`" "
    #Note that the `" is an escape character to quote strings, and the `& is needed to start the command
    $command = "`& `"$vsTestConsoleExe`" `"$targetTestDll`" $testRunSettings " 
    Write-Host "$command"
    Invoke-Expression $command
  shell: powershell
- name: search for visual studio test runner
  run: |
    $var1 = Get-Childitem -Path "C:\Program Files (x86)\Microsoft Visual Studio" -Filter "vstest.console.exe" -Recurse | select -ExpandProperty FullName
    Write-Host "VS test runner: $var1"
  shell: powershell
- name: Add VSTest.console.exe to the PATH
  uses: darenm/Setup-VSTest@v1

- name: Run functional tests
  run: vstest.console.exe "functional-tests\<functional-tests-project-dll-name-here>.dll"