我一直在Visual Studio 2015中使用Selenium Webdriver的NuGet包,取得了巨大的成功。我没有下载chromedriver.exe文件并手动添加它,而是通过NuGet完成了所有工作。
现在,在VS 2017中,这不再适用了。
我添加了所有必需的NuGet包:Selenium.WebDriver(3.11.1)和Selenium.Chrome.WebDriver(2.37.0)。
但是,当我尝试实例化驱动程序并打开Chrome时,我得到以下异常:
OpenQA.Selenium.DriverServiceNotFoundException: '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.'
使用NuGet(至少在这种情况下)的重点是不要手动下载和添加驱动程序。但为什么会这样呢?
为清洁起见,这里是我用来实例化chromedriver的测试代码:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
class Program {
public static IWebDriver Instance { get; set; }
static void Main (string[] args) {
var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
Instance = new ChromeDriver(driverService);
Instance.Navigate().GoToUrl("http://www.nrk.no");
}
}
注意:这是我在Visual Studio 2015中使用的代码的一部分,因此代码应该正常工作。
我知道有些人认为手动添加chromedriver.exe会更好,但我尝试了 - 通过添加 - 现有项目(如果更新则复制)。这也不起作用;我得到了同样的例外。
答案 0 :(得分:1)
我遇到了相同的问题,并将其修复。 首先,在创建新项目时,需要选择C#->。net(或.net标准)作为项目类型。 其次,在创建新项目之后,您可以使用nuget成功安装硒webdriver。
答案 1 :(得分:1)
我从您的评论中注意到您正在为.Net Core构建。我遇到类似的问题,即ChromeDriver.exe在构建后最终会出现在bin目录中,但使用dotnet publish在发布文件夹中将不可用,因此当我使用publish进行部署时,不会复制ChromeDriver.exe从构建输出目录。如果您遇到相同的问题,或者您不喜欢已经解决的解决方法,并且想解决该问题,则可以执行我所做的事情:
编辑正在构建的Web驱动程序项目的项目文件,以设置名为 PublishChromeDriver = true的属性。看起来像这样:
Visitor
我想您可以在build / publish命令行将属性设置为 / p:PublishChromeDriver = true (应该可以通过在build / publish参数中插入属性例如,Azure DevOps。
对this NuGet issue的评论与NuGet软件包中的文件未发布有关,这导致我不得不查看ChromeDriver targets file并在那里找到它。