Selenium FireFox 无法完全启动

Selenium FireFox will not fully start up

当试图创建一个新的 FirFoxDriver() 时,一个新的 window 被启动但从未完全加载。这是我的代码片段。我有这样的框架设置。每个网页都是它自己的文件,基本网页。每组页面测试都是它自己的文件,基本测试页面。

TestFixture 和 TestFixtureSetup 以及实际测试文件上的设置。

[TestFixture("FireFox")]
  public class LoginPageTests : BaseSeleniumTest
  {
    public readonly string _TestDriver;
    private LoginPage _LoginPage;
    private Users _Users;
    private HomePage _HomePage;

    public LoginPageTests(string driverToUse) { _TestDriver = driverToUse; }

    [TestFixtureSetUp]
    public override void TestFixtureSetUp()
    {
      base.DriverSetUp(_TestDriver);
      _Users = new Users(Credentials.bleonard);
    }

    [SetUp]
    public void Setup()
    {
      _LoginPage = new LoginPage(Driver);
    }

基础测试页面:

public abstract class BaseSeleniumTest
  {
    protected IWebDriver Driver;
    protected Stopwatch SeleniumStopwatch = Stopwatch.StartNew();

    protected BaseSeleniumTest()
    {
      SeleniumStopwatch = Stopwatch.StartNew();
    }

    public static IWebDriver GetDriver(string driverToUse)
    {
      IWebDriver w;

      Trace.Write("Newing up driver...");

      switch (driverToUse)
      {
        case "InternetExplorer":
          w = new InternetExplorerDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests");
          w.Manage().Window.Maximize();
          break;
        case "Chrome":
          ChromeOptions options = new ChromeOptions();
          options.AddArgument("test-type");
          options.AddArgument("start-maximized");
          w = new ChromeDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests", options);
          break;
        case "FireFox":
          w = new FirefoxDriver();
          w.Manage().Window.Maximize();
          break;
        default:
          w = new FirefoxDriver();
          w.Manage().Window.Maximize();
          break;
      }
      w.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));

      return w;
    }

    public virtual void DriverSetUp(string driverToUse)
    {
      try
      {
        if (Driver == null)
        {
          Driver = GetDriver(driverToUse);
        }
        else
        {
          Driver.Quit();
          Driver = GetDriver(driverToUse);
        }
        Driver.Manage().Cookies.DeleteAllCookies();
      }
      catch (Exception ex)
      {
        Assert.Inconclusive(TestResultReporter.AssertError = "Failed while getting web driver!" + ex);
      }
    }

调试时,happens.The base.DriverSetup(_TestDrive) 在 BaseTestPage 上被调用。由于该页面上的 Driver 为空,因此它会触发 GetDriver 方法,该方法采用 FireFox 的 driverToUse。 GetDrive 将移动到 switch case "FireFox",并触发新的 FirfoxDriver()。加载一个新的 window 但永远不会进入主页或任何内容。它挂在那条线上,输出显示 multiple

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll

然后在DriverSetUp方法中抛出catch语句,最后输出错误:

A first chance exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll

给出。任何帮助都会很棒,我已经为此工作了好几天了。

症状类似于我在使用 selenium 2.44 和 Firefox 35 或更高版本时看到的情况 - 存在兼容性问题:

作为解决方法,将 Firefox 降级到 34.0.5

要解决我的问题,请先尝试将 Selenium 更新到 2.45。 Webdriver 和支持所有语言的版本是 2015 年 2 月 27 日。确保您完全关闭 Visual Studio 并重新启动,这样一切就干净了。如果这不起作用,您需要降级到 FireFox 34.0.5。此时 FireFoxWebDriver 启动正常。