Selenium FireFox无法完全启动

时间:2015-03-03 14:18:10

标签: c# firefox selenium selenium-webdriver

尝试创建新的FirFoxDriver()时,会启动一个新窗口但从不完全加载。这是我的代码片段。我有这样的框架设置。每个网页都是它自己的文件Base web Page。每组页面测试都是它自己的文件,基础测试页面。

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);
    }

BaseTestPage:

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);
      }
    }

调试时会发生什么事情。在BaseTestPage上调用base.DriverSetup(_TestDrive)。由于该页面上的驱动程序为null,因此它会触发GetDriver方法,该方法接收来自fireFox的driverToUse。 GetDrive将转移到开关盒" FireFox",并启动新的FirfoxDriver()。加载一个新窗口,但永远不会去主页或任何东西。它会挂在该行上,输出显示多个

  

类型' System.Net.Sockets.SocketException'的第一次机会异常。   发生在System.dll

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

  

类型' OpenQA.Selenium.WebDriverException'的第一次机会异常。   发生在WebDriver.dll

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

要解决我的问题,请先尝试将Selenium更新为2.45。 Webdriver和支持所有语言的版本是2/27/15。确保您完全关闭Visual Studio并重新启动,以便一切都干净。如果这不起作用,您需要降级到FireFox 34.0.5。此时FireFoxWebDriver推出很好。