16

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

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/");
}

但是,我仍然收到以下异常:

当前目录或 PATH 环境变量上的目录中不存在 chromedriver.exe 文件。可以在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%至在命令行上运行它并没有显示我的工具文件夹已注册。

我究竟做错了什么?

4

7 回答 7

23

我不会为此烦恼 NuGet 包,仅仅是因为这不是一个类库——从技术上讲,这就是 NuGet 的全部意义所在。自该版本发布以来,ChromeDriver 也进行了多次更新。

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

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

您可能在第 4 点上失败了。该设置默认设置为不复制

于 2013-07-17T11:36:56.350 回答
11

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

IWebDriver driver = new ChromeDriver(".");
于 2018-09-08T18:52:15.037 回答
3

我不得不使用提供的答案的组合。首先,我必须让构建步骤将 chromedriver.exe 复制到输出。我使用 Arrans 的答案来做到这一点。如果您不想安装 VS,我怀疑您只需要更改项目文件以包含以下内容:

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

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

new ChromeDriver(".");
于 2019-05-09T14:45:33.713 回答
3

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

1.前往谷歌浏览器驱动官网 https://sites.google.com/a/chromium.org/chromedriver/downloads 下载解压

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

3.在VS中右键chrome驱动,选择属性设置为始终复制

于 2017-03-19T17:14:22.780 回答
0

我将它设置为“复制”,当我尝试重建它时总是导致错误。将其设置为“如果较新则复制”可以正常工作。

于 2016-08-26T20:21:58.647 回答
0
IWebDriver driver = new ChromeDriver("C:\\Folder_with_Chrome_driver");

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

于 2018-06-01T03:47:30.217 回答
0

它解决了这个问题:

IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
于 2019-10-17T10:09:02.190 回答