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

本文关键字:Selenium Firefox exe 当前目录 变量 路径 geckodriver | 更新日期: 2023-09-27 18:03:07

看到了很多关于Selenium 2.53.1和Firefox 47.0.1的问题,但是没有关于Selenium 3 Beta版本的问题。我试图使用新的壁虎/木偶Firefox网络驱动程序,但即使我有驱动程序的位置;我的环境路径,Firefox安装文件夹中的程序,并给出驱动器在系统环境中的位置,它仍然不能正常工作。

错误:

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

使用:

  • Selenium 2.53.1 server
  • Firefox 48
  • Selenium 3 Beta dll
  • 窗口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);
    }

对于为什么代码仍然不能检测到这个驱动程序的任何帮助或见解将非常感激。

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

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

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

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

安装Selenium.Firefox.Webdriver NuGet包

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

这个解决方案可能会帮助你解决问题:(它确实帮助了我)

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();
    }
}
参考
  • 查看@juver-malpartida的答案

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

这是给初学者的,我会在这篇文章之后写一个简短的版本。最简单的方法首先您需要下载驱动程序所使用的浏览器和提取所有司机到例如 C:'Selenium' 那里去 VisualStudio ,从这里添加 Selenium packages 所示图片点击这里在控制台写这段代码 PM> Install-Package Selenium.WebDriver之后,复制你的驱动程序目录和从windows搜索选项卡类型变量和选择(编辑系统环境变量) shown pic2 在这窗户你会高级选项卡在下面单击环境变量…这里你有 System variables 部分找到 PATH or Path 变量并编辑它小心don't delete it!!接下来点击新建 -粘贴驱动程序目录,然后点击所有窗口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> Install-Package Selenium。WebDriver

  3. 重启与

在您的项目中,单击Tools -> Nuget Package Manager -> Manage Nuget Packages for Solution…在开着的窗户里浏览Selenium.FireFox.WebDriver选择Project和你的Project Name,然后点击install。

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

我想试试这个:

  1. 首先,确保你的c#项目运行与客户端驱动程序库相同的。net框架版本(当你从Selenium HQ下载它们时,你应该看到它们基于的框架版本)。截至2017年9月15日,我有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;
     }
    }
    

So you can use :

IWebDriver driver = FirefoxInitialise.Init();

如果您有可执行文件在路径环境变量,这可能意味着它没有访问它的权限。作为解决方法,请尝试以管理员身份运行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。

我也一直得到这个错误&我唯一能做的就是最终修复它(不确定这是否是每个有这个问题的人的最佳答案),我把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

我有一个Visual Studio 2017问题,其中构建会失败,因为它正在寻找一个不存在的geckodriver执行目录。我还使用nuget包管理器添加了它。我发现的是在Visual Studio->项目->属性->构建它的工作,如果你使构建独立于架构:平台目标是任何CPU &;要么不选中其他复选框(偏好32位,允许不安全代码,优化代码),要么只选中偏好32位(这是我系统上的默认值)。顺便说一句:我的应用程序是。net Framework 4.5.2控制台应用程序

这个解决方案适用于VS2017。把geckodriver.exe拷贝到我的项目文件夹,像这样:

C: ' c#用户桌面' ' pedne ' ' FirstSolution ' FirstSolution ' bin '调试