安装了Selenium WebDriver.ChromeDriver Nuget包,但不适用于MSTest
我已将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/"); }
但是,我仍然遇到以下exception:
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 :软件包的tools文件夹用于可从软件包管理器控制台访问的powershell脚本和程序。 将文件夹复制到目标项目后,它将添加到`$ env:Path(PATH)环境变量中。
但是,这似乎不起作用。 我甚至在命令行上运行了echo %PATH%
,它没有将我的工具文件夹显示为已注册。
我究竟做错了什么?
我不打算使用NuGet包,因为这不是一个类库 – 从技术上讲,这就是NuGet的全部内容。 自该版本发布以来,ChromeDriver也已多次更新。
无论如何,我会说我刚刚做了同样的事情,看看问题是什么:
- 下载NuGet包
- 使用Visual Studio,通过右键单击项目 – >添加项目 – >现有项目,将新项目添加到项目中
- 导航并选择chromedriver.exe
- 更改属性以确保“复制到输出目录”设置为始终复制 。
您可能在第4点摔倒。该设置被设置为默认情况下不复制 。
我将其设置为“复制”,当我尝试重建它时总是会导致错误。 将其设置为“如果更新则复制”工作正常。
我有类似的问题通过这3个步骤解决了它
1.转到Google Chrome驱动程序官方网站https://sites.google.com/a/chromium.org/chromedriver/downloads下载并解压缩
2.转到Visual Studio解决方案资源管理器单击添加 – >现有文件 – >选择chrome驱动程序
3.右键单击VS中的chrome驱动程序,然后选择属性将其设置为始终复制
IWebDriver driver = new ChromeDriver("C:\\Folder_with_Chrome_driver");
下载相关驱动程序并添加本地路径。
Nuget包将把driver.exe文件放在{buildconfiguration} /中,告诉它查看应用程序的根目录,传递一个“。” 在创建驱动程序的新实例时。
IWebDriver driver = new ChromeDriver(".");