C# geckodriver.exe不在当前目录或路径变量Selenium 2.53.1+;Firefox48+;硒3β

C# geckodriver.exe不在当前目录或路径变量Selenium 2.53.1+;Firefox48+;硒3β,c#,selenium,firefox,selenium-webdriver,selenium-firefoxdriver,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环境变量的目录中。该驱动程序可在下载 使用: Selenium 2.53.1服务器

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

错误:

geckodriver.exe不存在于当前目录或PATH环境变量的目录中。该驱动程序可在下载

使用:

  • Selenium 2.53.1服务器
  • 火狐48
  • 硒3β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放在您的路径中:C:\Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug

您可以通过以下链接找到geckodriver.exe:


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

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

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

公共类测试结果{
私人IWebDriver;
私有StringBuilder验证者;
私有字符串baseURL;
private bool acceptNextAlert=true;
[测试初始化]
公共测试(){
FirefoxDriverService服务=FirefoxDriverService.CreateDefaultService(@“C:\geckodriver”,“geckodriver.exe”);
服务端口=64444;
service.FirefoxBinaryPath=@“C:\ProgramFiles(x86)\Firefox Developer Edition\Firefox.exe”;
驱动程序=新的Firefox驱动程序(服务);
baseURL=”http://localhost:49539";
verificationErrors=新的StringBuilder();
}
}
参考文献

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

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

找到一行,上面写着:
executable\u path=“geckodriver”,firefox\u options=None,

并将其更改为:


executable\u path=“/Library/geckodriver”,firefox\u options=None

这是给乞丐们的,我会在这篇文章之后在下面写一个简短的版本:) 最简单的方法首先,您需要下载您使用的浏览器中的所有驱动程序,并将所有驱动程序提取到
C:\Selenium\
中,然后转到
VisualStudio
,然后从这里添加控制台图片中显示的
Selenium软件包
,编写此代码
PM>
安装软件包Selenium.WebDriver
然后复制驱动程序目录,从windows搜索选项卡键入变量并选择(编辑系统环境和变量)
显示pic2
在此窗口中,您将在下面单击环境变量…
系统变量
部分查找
路径或路径
变量并编辑它小心
不要删除它下一步单击新建-粘贴驱动程序目录,然后单击所有windws确定按钮,仅此而已。重新启动VS程序并检查它。在此之后,您不必像这样将控制器路径添加到构造函数中

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 
还有一件事别忘了导入文件

对于更高级的IT人员。
  • 添加到环境路径驱动程序目录中
  • VisualStudio
    在控制台模式下使用NuGet package manager安装Selenium,或者您希望如何安装。 PM>安装包Selenium.WebDriver

  • 重启VS

  • 我遇到了一个VisualStudio2017问题,其中构建将失败,因为它在一个不存在的目录中查找geckodriver exec。我还使用nuget pack manager添加了它。我在VisualStudio->Project->Properties->Build中发现,如果使构建独立于体系结构,它就可以工作:平台目标是任何CPU&或者将其他复选框(首选32位、允许不安全代码、优化代码)都保留为未选中状态,或者只选中首选32位(这是我系统上的默认设置)。 顺便说一句:我的应用程序是一个.NETFramework 4.5.2控制台应用程序,安装NuGet软件包

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

    我将尝试以下方法:

  • 首先,确保您的C#项目运行的.NET framework版本与客户端驱动程序库相同(当您从Selenium HQ下载它们时,您应该看到它们所基于的框架版本)。截至2017年9月15日,我有3.5和4.0版本,因此我不得不将我的C#项目降级为.NET 4.0,以使用4.0客户端驱动程序库

  • 在代码中,创建Firefox驱动程序服务时,请确保明确指定geckodriver.exe所在的路径。查看我如何在对
    FirefoxDriversService.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;
     }
    }
    
  • 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; } }

    IWebDriver driver = FirefoxInitialise.Init();