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

时间:2016-08-18 10:42:45

标签: c# selenium firefox selenium-webdriver selenium-firefoxdriver

看到很多关于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 DLL
  • Window 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);
    }

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

11 个答案:

答案 0 :(得分:26)

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

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

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

答案 1 :(得分:20)

安装Selenium.Firefox.Webdriver NuGet包。

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

答案 2 :(得分:8)

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

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();
    }
}
参考

答案 3 :(得分:4)

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

答案 4 :(得分:1)

这是为了这个帖子后,谁在下面写了短版本的begginers :) 最简单的方法首先您需要下载所有驱动程序使用的浏览器并将所有驱动程序提取到例如 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 ok按钮。重新启动 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&GT;安装包Selenium.WebDriver

  3. 重启VS。

答案 5 :(得分: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的调用添加路径参数:

    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;
     }
    }
    
  3. So you can use :

    IWebDriver driver = FirefoxInitialise.Init();
    

答案 6 :(得分: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。

答案 7 :(得分:0)

我也一直得到这个错误&amp;我唯一能做的就是最终修复它(不确定它是否是解决这个问题的每个人的最佳答案)是我将geckodriver.exe放在我的主库目录中,然后我打开{{1 }}:

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,

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

C:\ Users \ pedne \ Desktop \ C#\ FirstSolution \ FirstSolution \ bin \ Debug

答案 10 :(得分:0)

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

这是将驱动程序放入Selenium项目的简易表格。