geckodriver.exe不在当前目录或路径变量中,Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta
看到很多关于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); }
任何有关代码仍然无法检测到此驱动程序的帮助或见解将非常感激。
尝试将geckodriver.exe放在您的路径中:C:\ Users \ YourName \ Documents \ Visual Studio 2013 \ Projects \ seleniump \ seleniump \ bin \ Debug
你可以在这个链接上找到geckodriver.exe:
安装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!!
接下来点击新的 – 粘贴驱动程序目录,然后单击所有windws ok按钮。 重新启动你的VS程序并ckeck它。 在此之后,您不必将导向器路径添加到您的构造函数中
IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium");
还有一件事不要忘记导入文件。
using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.IE;
对于更多高级IT人员。
- 添加到环境路径您的驱动程序目录。
-
VisualStudio
在控制台模式下使用NuGet包管理器安装Selenium,或者您喜欢什么。
PM> Install-Package Selenium.WebDriver
- 重启VS.
我会试试这个:
-
首先,确保您的C#项目运行与客户端驱动程序库相同的.NET框架版本(当您从Selenium HQ下载它们时,您应该看到它们所基于的框架版本)。 截至9/15/2017,我有3.5和4.0,所以我不得不将我的C#项目降级到.NET 4.0以使用4.0客户端驱动程序库。
-
在您的代码中,创建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();
如果路径环境变量中有可执行文件,则可能意味着它没有访问权限的权限。 作为解决方法,尝试以管理员身份运行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 exec的不存在的目录。 我也使用nuget pack manager添加了它。 我发现的是Visual Studio-> Project-> Properties-> Build如果你使构建独立于体系结构它是有效的:平台目标是任何CPU并保留其他复选框(首选32位,允许不安全的代码,所有未经检查的优化代码)或只选择32位Prefer(这是我系统上的默认设置)。 顺便说一句:我的应用程序是一个.NET Framework 4.5.2控制台应用程序