2015-03-03 101 views
1

嘗試創建新的FirFoxDriver()時,會啓動一個新窗口,但從未完全加載。這裏是我的代碼片斷。我有這樣的框架。每個網頁都是它自己的文件,即基本網頁。每一組頁面測試都是它自己的文件,Base測試頁面。Selenium FireFox將不會完全啓動

TestFixture和TestFixtureSetup和Setup對實際測試文件。

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

當調試繼承人什麼happens.The base.DriverSetup(_TestDrive)被調用的BaseTestPage。由於該頁面上的驅動程序爲空,它將觸發GetDriver方法,該方法接收FireFox的driverToUse。 GetDrive將移動到開關案例「FireFox」,並引發新的FirfoxDriver()。加載一個新窗口,但永遠不會去主頁或任何東西。它被掛在與輸出顯示多個

型「System.Net.Sockets.SocketException」 的第一次機會異常出現在System.dll中

,然後catch語句該行在DriverSetUp方法和的最終輸出引發錯誤:類型OpenQA.Selenium.WebDriverException' 的

第一次機會異常發生在WebDriver.dll

給出。任何幫助都會很棒,我已經在這裏工作了好幾天了。

+0

聽起來像一個版本不匹配 - 你使用什麼版本的Selenium + Firefox和什麼是*整個*堆棧跟蹤? (**不**只是消息) – Arran 2015-03-03 15:07:10

回答

1

的症狀相似,在使用selenium 2.44和Firefox 35以上我所看到的 - 有兼容性問題:

作爲一種變通方法, 將Firefox降級爲34.0.5

+0

更新到Selenium 2.45沒有工作 – 2015-03-03 14:57:27

+0

@alexweeks我認爲2.45還沒有在那裏的C#。請降級您的瀏覽器。 – alecxe 2015-03-03 14:58:06

+0

當我在VS中運行nuget更新時,它會更新它。另外SeleniumHQ顯示了c#中2.45版本發佈的2.45版本。目前正在回遷到老版本的firefox – 2015-03-03 15:08:29

0

要解決我的問題,首先嚐試將Selenium更新爲2.45。 Webdriver和Support for all languages的發佈時間爲2/27/15。確保你完全關閉Visual Studio並重新啓動,因此一切都很乾淨。如果這不起作用,你需要降級到FireFox 34.0.5。此時FireFoxWebDriver正常運行。

相關問題