8

将 Visual Studio 中的 selenium 更新为 3.0,将 firefox 更新为 47.0,现在当我尝试使用本地 webdriver 模式时出现此错误:当前目录或 PATH 环境变量上的目录中不存在 geckodriver.exe 文件。

当我使用远程模式(seleniumhub)时,即使它使用 Firefox 45.0 版本也可以正常工作。

试图搜索一些示例,但没有找到 c# 的任何内容,仅适用于 java 并且仍然无法使其工作。

我的网络驱动程序设置:

 switch (ConfigurationManager.AppSettings["WebDriverMode"].ToLower())
                {
                    case "local":
                        switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
                        {
                            case "firefox":
                                driver = new AdvancedFirefoxDriver();
                                break;
                            case "ie":
                                driver = new AdvancedInternetExplorerDriver();
                                break;
                            case "chrome":
                                driver = new AdvancedChromeDriver();
                                break;
                            default:
                                throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower()));
                        }

                        break;
                    case "remote":
                        var huburl = new Uri(ConfigurationManager.AppSettings["SeleniumHubAddress"]);
                        DesiredCapabilities capabilities;
                        switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
                        {
                            case "firefox":
                                capabilities = DesiredCapabilities.Firefox();
                                break;
                            case "ie":
                                capabilities = DesiredCapabilities.InternetExplorer();
                                break;
                            case "chrome":
                                capabilities = DesiredCapabilities.Chrome();
                                break;
                            default:
                                throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower()));
                        }

                        capabilities.IsJavaScriptEnabled = true;
                        driver = new AdvancedRemoteWebDriver(huburl, capabilities);
                        break;
                    default:
                        throw new NotImplementedException();
                }
4

3 回答 3

8

从 selenium 3.0 开始,您必须使用geckodriverFirefox 浏览器。

从这里下载最新的 geckodriver https://github.com/mozilla/geckodriver/releases

你有两个选择:

  1. 在 Windows 系统环境变量中输入 geckodriver 路径PATH
  2. 或以编程方式指定 geckodriver.exe 的位置,如下所示。

System.Environment.SetEnvironmentVariable("webdriver.gecko.driver",@"/path/to/geckodriver.exe"

注意:如果设置 PATH 环境变量,可能需要重新启动系统。

从 Firefox 47 开始(不包括它),Selenium 默认使用 geckodriver 功能。对于 47 和以前的版本,您可能需要关闭此功能,以便 Selenium 可以像我们过去使用这些版本一样使用 Firefox 内置支持。

JAVA版实现相同:

DesiredCapabilities d = new DesiredCapabilities();
d.setCapability("marionette", false);  // to disable marionette.
WebDriver driver = new FirefoxDriver(d);

参考:

  1. 如何在 C# 中设置系统属性
  2. https://msdn.microsoft.com/en-us/library/z46c489x.aspx
  3. https://superuser.com/questions/317631/setting-path-in-windows-7-command-prompt
  4. https://stackoverflow.com/a/40466109/2575259
于 2016-11-17T15:11:00.187 回答
1

我与 Selenium 的 Chrome 驱动程序有类似的问题,我正在学习构建自动化框架的课程,我在框架参考下安装了 NuGet 包,而不是在测试下安装它。 在此处输入图像描述

于 2019-04-16T20:40:07.683 回答
0

您可以从这里下载 geckodriver:https ://github.com/mozilla/geckodriver/releases ,然后您只需将文件的目录添加到 FirefoxDriver 构造函数中,如下所示:
new FirefoxDriver("geckoDriverDirectory")

于 2019-10-22T04:21:15.167 回答