geckodriver.exe不在当前目录或路径变量中,Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

问题描述 投票:25回答:11

看到很多关于Selenium 2.53.1和Firefox 47.0.1的问题,但没有关于Selenium 3 Beta版本的问题。我正在尝试使用新的gecko / marionette Firefox webdrivers,但即使我有驱动程序位置;我的环境路径,Firefox在程序中安装文件夹,并在系统环境中给出驱动器位置,它仍然无法正常工作。

错误:

geckodriver.exe不存在于当前目录或PATH环境变量的目录中。该驱动程序可以在https://github.com/mozilla/geckodriver/releases下载。

使用:

  • Selenium 2.53.1服务器
  • Firefox 48
  • Selenium 3 Beta DLLs
  • 窗口10

示例代码1

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         Driver = new FirefoxDriver();
    }

还尝试了以下内容:

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
         service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
         FirefoxOptions options = new FirefoxOptions();
         TimeSpan time = TimeSpan.FromSeconds(10);
         Driver = new FirefoxDriver(service, options, time);
    }

任何有关代码仍然无法检测到此驱动程序的帮助或见解将非常感激。

c# selenium firefox selenium-webdriver selenium-firefoxdriver
11个回答
26
投票

尝试将geckodriver.exe放在您的路径中:C:\ Users \ YourName \ Documents \ Visual Studio 2013 \ Projects \ seleniump \ seleniump \ bin \ Debug

你可以在这个链接上找到geckodriver.exe:

https://github.com/mozilla/geckodriver/releases


0
投票

这个解决方案适用于VS2017。刚刚将geckodriver.exe复制到我的项目文件夹,如下所示:

C:\ Users \用户pedne \桌面\ C#\ FirstSolution \ FirstSolution \ BIN \调试


0
投票

在您的项目中,单击工具 - > Nuget包管理器 - >管理解决方案的NuGet包...在打开的窗口中浏览Selenium.FireFox.WebDriver选择Project和您的项目名称,然后单击安装。

这是将驱动程序放在Selenium项目上的更简单的形式。


19
投票

安装Selenium.Firefox.Webdriver NuGet包。

这会将geckodriver.exe复制到bin文件夹。


9
投票

此解决方案可以帮助您解决问题:(虽然它确实帮助了我)

public class TestResult {

    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [TestInitialize]
    public void SetupTest() {
        FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver", "geckodriver.exe");
        service.Port = 64444;
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
        driver = new FirefoxDriver(service);
        baseURL = "http://localhost:49539";
        verificationErrors = new StringBuilder();
    }
}
REFERENCE

4
投票

如果您在项目中包含geckodriver.exe并在编译时将其复制到目标目录,则webdriver的工作方式与以前的版本相同。


1
投票

这是在这篇文章之后,谁是下瘾者在下面写下短版本:)最简单的方法首先你需要下载所有驱动程序你使用的浏览器并将所有驱动程序提取到例如C:\Selenium\那里去VisualStudio并从这里添加Selenium packages在图片中显示Click here在控制台中编写此代码PM>Install-Package Selenium.WebDriver之后复制您的驱动程序目录和从Windows搜索选项卡类型变量并选择(编辑系统环境和变量)shown pic2在这个窗口中你将在下面单击环境变量有高级选项卡...在这里你有System variables部分找到PATH or Path变量和编辑它要小心don't delete it!!接下来点击新 - 粘贴驱动程序目录,然后单击所有windws确定按钮即可。重新启动你的VS程序并将其关闭。在此之后,您不必将导向器路径添加到您的构造函数中

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 

还有一件事不要忘记导入文件。

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;

对于更多高级IT人员。

  1. 添加到环境路径您的驱动程序目录。
  2. VisualStudio在控制台模式下使用NuGet包管理器安装Selenium或者你喜欢什么。 PM> Install-Package Selenium.WebDriver
  3. 重启VS.

1
投票

我会试试这个:

  1. 首先,确保您的C#项目运行与客户端驱动程序库相同的.NET框架版本(当您从Selenium HQ下载它们时,您应该看到它们所基于的框架版本)。截至9/15/2017,我有3.5和4.0,所以我不得不将我的C#项目降级到.NET 4.0以使用4.0客户端驱动程序库。
  2. 在您的代码中,创建Firefox驱动程序服务时,请确保明确指定geckodriver.exe所在的路径。看看我如何在你的FirefoxDriverService.CreateDefaultService调用中添加一个path参数: using OpenQA.Selenium.Firefox; public static class FirefoxInitialise { private static IWebDriver Driver{get; set;} public static IWebDriver Init() { // I'm assuming your geckodriver.exe is located there: // @"C:\MyGeckoDriverExePath\geckodriver.exe" FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\MyGeckoDriverExePath\"); service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary FirefoxOptions options = new FirefoxOptions(); TimeSpan time = TimeSpan.FromSeconds(10); Driver = new FirefoxDriver(service, options, time); return Driver; } }

So you can use :

IWebDriver driver = FirefoxInitialise.Init();

0
投票

如果路径环境变量中包含可执行文件,则可能意味着它无权访问它。作为解决方法,尝试以管理员身份运行Visual Studio。

或者您可以将其移动到有权限的地方。例如:

var service = FirefoxDriverService.CreateDefaultService(@"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;

var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);

_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));

在那里,我把二进制文件放在D:\tmp\Binaries\中并在代码中指定它来检查那里的geckodriver。


0
投票

我也一直得到这个错误,我唯一能做的就是最终解决它(不确定这是否是每个有这个问题的人的最佳答案)是我把geckodriver.exe放在我的主库目录中,然后我打开了webdriver.py

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py

找到了它所说的行:executable_path="geckodriver", firefox_options=None,

并将其更改为:

executable_path="/Library/geckodriver", firefox_options=None


0
投票

我有一个Visual Studio 2017问题,其中构建将失败,因为它正在查找geckodriver exec的不存在的目录。我也使用nuget pack manager添加了它。我发现在Visual Studio-> Project-> Properties-> Build中,如果你使构建独立于架构,它就可以工作:平台目标是任何CPU并且保留其他复选框(首选32位,允许不安全的代码,所有未经检查的优化代码)或只选择32位Prefer(这是我系统上的默认设置)。顺便说一句:我的应用程序是一个.NET Framework 4.5.2控制台应用程序

© www.soinside.com 2019 - 2024. All rights reserved.