Selenium C#FirefoxDriver不适用于最新的Selenium&火狐

时间:2017-12-12 18:26:14

标签: c# google-chrome selenium firefox

Selenium应该可以在不使用任何驱动程序的情况下使用Firefox,但是我发现最新的Selenium& Firefox(几天前安装,Selenium 3和Firefox ERS ​​52.5)。

我跟随“Selenium C# and NUnit Pain Free Start Guide”作为一个新手,但发现简单的Selenium C#NUnit测试不适用于Firefox。

这是我的C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Chrome;

namespace NewSeleniumProject
{
    [TestFixture]
    public class MyFirstTest
    {
        IWebDriver driver;

        [SetUp]
        public void SetupTest()
        {
            // driver = new ChromeDriver();
            driver = new FirefoxDriver();

            //driver = new FirefoxDriver(new FirefoxBinary(@"C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"), new FirefoxProfile(), TimeSpan.FromMinutes(10));

            //var options = new FirefoxOptions();
            //options.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
            //driver = new FirefoxDriver(options);

        }

        [Test]
        public void myFirstTest()
        {
            driver.Navigate().GoToUrl("http://www.swtestacademy.com");

            Assert.AreEqual("SW Test Academy - Software Test Academy", driver.Title);

            driver.Close();

            driver.Quit();
        }
    }
}

以下是我开始工作的旅程。

  • 首先,driver = new ChromeDriver()毫无障碍地为我工作。
  • 当我使用带有driver = new FirefoxDriver();的32b Firefox ERS ​​52时,我收到“Unable to determine the current version of FireFox using the registry”错误,但Unable to determine the current version of FireFox after updated to 28.0的答案都没有解决我的问题。所以我尝试了“尝试卸载Firefox,然后重新安装它。这就是我要做的”之一。
  • Wit 64b Firefox ERS ​​52(和driver = new FirefoxDriver();),我收到“OpenQA.Selenium.WebDriverException : Cannot find Firefox binary in PATH or default install locations. Make sure Firefox is installed.”错误。
  • 对于32b和64b Firefox使用var options = new FirefoxOptions()时,我收到“OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:6985/session timed out after 60 seconds.

同样,我所关注的整个设置来自“Selenium C# and NUnit Pain Free Start Guide”。还有什么我想念的?谢谢。

更新

关于错误的问题

OpenQA.Selenium.DriverServiceNotFoundException : The geckodriver.exe file does not exist in the current directory or in a directory on the PATH environment variable. 

我已经通过从https://github.com/mozilla/geckodriver/releases下载驱动程序来修复。

2 个答案:

答案 0 :(得分:1)

确保版本首先匹配。然后尝试这种方式为Firefox浏览器做。我之前遇到过相同的挑战,但这种调用Firefox的方式解决了这个问题。希望它可能会有所帮助

var binary = new FirefoxBinary(@"----Firefox.exe Local Path------");
var profile = new FirefoxProfile();
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"--GeckoDriver Path-----");
service.FirefoxBinaryPath = @"----Firefox.exe Local Path------";
driverInstance = new FirefoxDriver(service);

答案 1 :(得分:0)

所以是的,您需要将驱动程序放在应用程序的bin文件夹中,并使用带有{}的options()将.exe的路径位置传递给驱动程序服务。

我有同样的事情,但两者之间存在差异。 Firefox安装在64位文件夹中,chrome位于32位文件夹(x86)Program Files中,我相信这是问题所在,Selenium只查看应用程序.exe的32位文件夹。

当我开始使用除边缘以外的任何其他驱动程序时,我遇到了同样的问题。 您可能遇到的新gecko驱动程序的另一个问题是firefox不会在请求的URL上打开。请注意,这是在VB中。虽然应该是一样的。我可能只是进行测试。