Selenium WebDriver.ChromeDriver Nuget package installed, but not working for MSTest

这一生的挚爱 提交于 2019-12-18 04:40:43

问题


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?


回答1:


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.




回答2:


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(".");



回答3:


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




回答4:


I had to use a combination of the answers provided. First, I had to make the build step copy the chromedriver.exe to the output. I used Arrans answer to do this. If you don't want to install VS, I suspect that to you only need to change your project file to include this:

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

It still didn't work. I then had to change my code to use RnDrxs answer by changing my chrome driver to

new ChromeDriver(".");



回答5:


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.




回答6:


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

Download related driver and add local path.




回答7:


its resolves the issue :

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


来源:https://stackoverflow.com/questions/17695742/selenium-webdriver-chromedriver-nuget-package-installed-but-not-working-for-mst

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!