如果使用有序测试

时间:2016-06-15 12:15:46

标签: unit-testing selenium visual-studio-2015

我用Selenium写了一个单元测试。 Unit测试类有一些(工作)单元测试。构造函数如下所示:

private IWebDriver _chrome;
public SeleniumTest()
  {
    _chrome = new ChromeDriver();
  }  

当我使用Test Exporer 在Test类中运行其中一个UnitTests时,一切正常

但是当我创建包含相同单元测试的有序测试时,我在尝试启动ChromeDriver时收到错误:

OpenQA.Selenium.DriverServiceNotFoundException was unhandled by user code
  HResult=-2146233088
  Message=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://chromedriver.storage.googleapis.com/index.html.
  Source=WebDriver
  StackTrace:
       bei OpenQA.Selenium.DriverService.FindDriverServiceExecutable(String executableName, Uri downloadUrl)
       bei OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService()
       bei OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
       bei OpenQA.Selenium.Chrome.ChromeDriver..ctor()
       bei MyTest.SeleniumTest..ctor() in C:\dev\myTest\SeleniumTest.cs:Zeile 27.

我使用NuGet将Selenium(和Chrome)添加到该项目

更新:chromedriver.exe位于项目的BIN目录中

2 个答案:

答案 0 :(得分:2)

问题是有序测试会创建自己的目录并从那里运行代码。它们看起来像这样:

  

C:\ dev \ myApp \ MyTest \ TestResults \ MachineName 2016-06-15 15_26_39 \ Out

在此目录中没有chromedriver.exe

我使用DeploymentItem - 属性解决了这个问题。在创建类的实例之前,此属性将文件从bin目录复制到Out目录。所以class-Attributes看起来像这样:

[TestClass]
[DeploymentItem("chromedriver.exe")]

之后,orderedTest运行时没有错误

答案 1 :(得分:0)

找不到chromedriver可执行文件。您应该在PATH环境变量中添加chromedriver.exe的路径,如execption消息中所述:

  

chromedriver.exe文件不存在于当前目录或PATH环境变量的目录中。可以在http://chromedriver.storage.googleapis.com/index.html下载驱动程序。