gpt4 book ai didi

selenium-webdriver - VS 2017 和 Selenium.Webdriver NuGet : chromedriver. exe 未找到

转载 作者:行者123 更新时间:2023-12-02 01:02:26 28 4
gpt4 key购买 nike

我一直在 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 更好,但我尝试过 - 通过添加 - 现有项目(如果更新,则复制)。这也行不通;我得到同样的异常(exception)。

最佳答案

我从您的评论中注意到您正在为 .Net Core 构建。我遇到了一个类似的问题,即 ChromeDriver.exe 在构建后最终会出现在 bin 目录中,但它在使用 dotnet publish 的发布文件夹中不可用,因此当我使用发布进行部署时,ChromeDriver.exe 不会被复制从构建输出目录。如果您遇到同样的问题,或者如果您不喜欢已经做过的变通方法并想要修复它,那么您可以按照我的方法进行操作:

编辑您正在构建的 Web 驱动程序项目的项目文件以设置名为 的属性。发布ChromeDriver = 真的。它看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
<IsPackable>false</IsPackable>
<OutputType>Library</OutputType>
<ApplicationIcon />
<StartupObject />
<NeutralLanguage>en</NeutralLanguage>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>

<!-- Add the following line -->
<PublishChromeDriver>true</PublishChromeDriver>

</PropertyGroup>
...

我想您可以在构建/发布命令行中将属性设置为 /p:PublishChromeDriver=true (例如,应该可以通过 Azure DevOps 中的构建/发布参数插入属性)。

this NuGet issue上的评论与未发布的 NuGet 包中的文件相关的问题让我查看了 ChromeDriver targets file并在那里找到它。

关于selenium-webdriver - VS 2017 和 Selenium.Webdriver NuGet : chromedriver. exe 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com