看到很多关于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下载。
使用:
示例代码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:
这个解决方案适用于VS2017。刚刚将geckodriver.exe复制到我的项目文件夹,如下所示:
C:\ Users \用户pedne \桌面\ C#\ FirstSolution \ FirstSolution \ BIN \调试
在您的项目中,单击工具 - > Nuget包管理器 - >管理解决方案的NuGet包...在打开的窗口中浏览Selenium.FireFox.WebDriver选择Project和您的项目名称,然后单击安装。
这是将驱动程序放在Selenium项目上的更简单的形式。
安装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();
}
}
REFERENCE
如果您在项目中包含geckodriver.exe并在编译时将其复制到目标目录,则webdriver的工作方式与以前的版本相同。
这是在这篇文章之后,谁是下瘾者在下面写下短版本:)最简单的方法首先你需要下载所有驱动程序你使用的浏览器并将所有驱动程序提取到例如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;
VisualStudio
在控制台模式下使用NuGet包管理器安装Selenium或者你喜欢什么。
PM> Install-Package Selenium.WebDriver我会试试这个:
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控制台应用程序