Selenium WebDriver.ChromeDriver Nuget package inst

2019-02-13 12:24发布

I have added the WebDriver.ChromeDriver nuget package to my solution, which contains the ChromeDriver.exe file, required for Selenium WebDriver to run automated tests using Chrome. Looking at the package contents, it just contains the file following file:

tools\chromedriver.exe

What this is supposed to do is add this folder to the PATH environment variable so that chromedriver.exe is accessible via the following code (this is in a UnitTest project using MSTest):

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

However, I am still getting the following exception:

The chromedriver.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at http://code.google.com/p/chromium/downloads/list.

Looking at the nuget documentation, it suggests that anything in the tools folder of the nuget package will get added to the PATH environment variable automatically:

http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package: The tools folder of a package is for powershell scripts and programs accessible from the Package Manager Console. After the folder is copied to the target project, it is added to the `$env:Path (PATH) environment variable.

However, this doesn't seem to be working. I have even run echo %PATH% on the command line and it doesn't show my tools folder as registered.

What am I doing wrong?

5条回答
Emotional °昔
2楼-- · 2019-02-13 13:11

I set it to "Copy", which always which resulted in error when I try to rebuild it. Setting it to "Copy if newer" works fine.

查看更多
家丑人穷心不美
3楼-- · 2019-02-13 13:13

I wouldn't bother with the NuGet package for this, simply because this is not a class library - which is technically, what NuGet is all about. ChromeDriver has also been updated many times since that release.

Anyway, I would say that I have just done the same thing to see what the issue is:

  1. Download NuGet package
  2. Using Visual Studio, add a new item to the project by right-clicking on the project -> Add Item -> Existing Item
  3. Navigate and select the chromedriver.exe
  4. Change the properties to ensure "Copy to Output Directory" is set to Copy always.

You are probably falling down on point 4. That setting is set to Do not copy by default.

查看更多
地球回转人心会变
4楼-- · 2019-02-13 13:13
IWebDriver driver = new ChromeDriver("C:\\Folder_with_Chrome_driver");

Download related driver and add local path.

查看更多
ら.Afraid
5楼-- · 2019-02-13 13:14

I had similar problem solved it by these 3 steps

1.Goto google chrome drivers official site https://sites.google.com/a/chromium.org/chromedriver/downloads download and unpack

2.Goto Visual Studio solution explorer click add -> existing file -> select chrome driver

3.Right click on chrome driver in VS and select properties set it to always copy

查看更多
三岁会撩人
6楼-- · 2019-02-13 13:14

The Nuget package will place the driver.exe file in {buildconfiguration}/ To tell it to look in the root of the application, pass a "." when creating a new instance of the driver.

IWebDriver driver = new ChromeDriver(".");
查看更多
登录 后发表回答