Selenium WebDriver.ChromeDriver Nuget包已安装,但不适用于MSTest

本文关键字:不适用 适用于 MSTest 安装 WebDriver ChromeDriver Nuget Selenium | 更新日期: 2023-09-27 18:23:45

我已经将WebDriver.ChromeDriver nuget包添加到我的解决方案中,该包包含ChromeDriver.exe文件,Selenium WebDriver使用Chrome运行自动测试是必需的。查看包的内容,它只包含以下文件:

tools'chromedriver.exe

应该做的是将此文件夹添加到PATH环境变量中,以便chromedriver.exe可以通过以下代码访问(这是在使用MSTest的UnitTest项目中):

[TestMethod]
public void LaunchWebsite_Chrome()
{
     // create ChromeDriver - this should work if chromedriver.exe 
     // is known to the environment PATH variable
     IWebDriver driver = new ChromeDriver();
     driver.Navigate().GoToUrl("http://localhost/");
}

然而,我仍然得到以下例外:

chromedriver.exe文件不存在于当前目录或PATH环境变量上的目录中。驱动程序可在下载http://code.google.com/p/chromium/downloads/list.

查看nuget文档,它表明nuget包的tools文件夹中的任何内容都将自动添加到PATH环境变量中:

http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package:软件包的工具文件夹用于从软件包管理器控制台访问的powershell脚本和程序。将文件夹复制到目标项目后,会将其添加到`$env:Path(Path)环境变量中。

然而,这似乎并不奏效。我甚至在命令行上运行了echo %PATH%,它不会显示我的工具文件夹为已注册。

我做错了什么?

Selenium WebDriver.ChromeDriver Nuget包已安装,但不适用于MSTest

我不会为此而使用NuGet包,因为这不是类库——从技术上讲,这就是NuGet的全部。ChromeDriver自发布以来也进行了多次更新。

无论如何,我想说,我刚刚做了同样的事情,看看问题是什么:

  1. 下载NuGet包
  2. 使用Visual Studio,右键单击项目->添加项->现有项,将新项添加到项目中
  3. 导航并选择chromedriver.exe
  4. 更改属性以确保"复制到输出目录"设置为"始终复制"

你可能在第4点上失败了。默认情况下,该设置设置为"不复制"。

Nuget包将把driver.exe文件放在{buildconfiguration}中/要让它在应用程序的根目录中查找,请在创建驱动程序的新实例时传递一个"."。

IWebDriver driver = new ChromeDriver(".");

我有类似的问题,通过这3个步骤解决了它

1.转到谷歌chrome驱动程序官方网站https://sites.google.com/a/chromium.org/chromedriver/downloads下载并打开

2.转到Visual Studio解决方案资源管理器,单击添加->现有文件->选择chrome驱动程序

3.右键单击VS中的chrome驱动程序并选择属性,将其设置为始终复制

我不得不使用所提供答案的组合。首先,我必须使构建步骤将chromedriver.exe复制到输出。我用阿伦的答案来做这件事。如果你不想安装VS,我怀疑对你来说,只需要更改你的项目文件就可以了:

<ItemGroup>
    <None Update="chromedriver.exe">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

它仍然没有起作用。然后我不得不通过将chrome驱动程序更改为来更改代码以使用RnDrxs答案

new ChromeDriver(".");

我将其设置为"Copy",当我尝试重新构建它时,这总是会导致错误。将它设置为"如果更新则复制"效果良好。

IWebDriver driver = new ChromeDriver("C:''Folder_with_Chrome_driver");

下载相关驱动程序并添加本地路径。

它解决了问题:

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