2016-06-17 11 views
0

Ok so wie viele von euch Kollegen Webdriver Tester wissen, die Veröffentlichung von Firefox 47 hat den Webdriver.FirefoxDriver gebrochen. Die gesamte Dokumentation, die ich finden kann, sagt mir, dass der neue FirefoxDriver Marionette ist.Update auf Marionette Treiber C#

Also habe ich die neueste ausführbare Datei von https://github.com/mozilla/geckodriver/releases in dress.exe umbenannt und in mein Testverzeichnis verschoben.

Hier ist mein Setup-Methode

[TestFixture("chrome")] 
[TestFixture("firefox")] 
//[TestFixture("internet explorer")] 
[Category("ExistingUser")] 
public class ExistingUserTestSuite 
{ 
    public string browser; 
    public IWebDriver Driver { get; set; } 
    public UserInfo User { get; set; } 
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger("ExistingUserTest"); 

    public ExistingUserTestSuite(string browser) 
    { 
     this.browser = browser; 
    } 



    [OneTimeSetUp] 
    public void SetUp() 
    { 
     switch (browser) 
     { 
      case "chrome": 
       Driver = new ChromeDriver(); 
       break; 
      case "firefox": 
       FirefoxOptions op1 = new FirefoxOptions(); 
       op1.IsMarionette = true; 
       op1.AddAdditionalCapability("marionette", true); 
       Driver = new FirefoxDriver(op1); 
       break; 

Wenn ich zu laufen versuche ich die folgende Ausnahme erhalten. Ich kann sehen, dass der Prozess "wire.exe" im Prozess-Explorer ausgeführt wird, wenn ich die Tests starte.

Test Name: ChangePlan 
Test FullName: POMAuctivaTest.TestSuite.ExistingUserTestSuite("firefox").ChangePlan 
Test Source: c:\git\POMAuctivaTest\POMAuctivaTest.TestSuite\ExistingUserTestSuite.cs : line 359 
Test Outcome: Failed 
Test Duration: 0:00:00.0000001 

Result Message: OneTimeSetUp: System.InvalidOperationException : entity not found 

Hier ist der Stack-Trace die Ausnahme

at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxDriverService service, FirefoxOptions options, TimeSpan commandTimeout) 
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxOptions options) 
    at POMAuctivaTest.TestSuite.ExistingUserTestSuite.SetUp() in c:\git\POMAuctivaTest\POMAuctivaTest.TestSuite\ExistingUserTestSuite.cs:line 56 

Die meisten Ratschläge, die ich sehen, ist in Bezug auf sicherstellen, dass Ihr Systempfad aktualisiert generiert. Ich fühle, dass dies hier nicht der Fall ist, als ob ich die wire.exe aus meinem Test/bin/debug-Ordner entferne, bekomme ich die folgende Ausnahme.

Test Name: ChangePlan 
Test FullName: POMAuctivaTest.TestSuite.ExistingUserTestSuite("firefox").ChangePlan 
Test Source: c:\git\POMAuctivaTest\POMAuctivaTest.TestSuite\ExistingUserTestSuite.cs : line 359 
Test Outcome: Failed 
Test Duration: 0:00:00.0000001 

Result Message: OneTimeSetUp: OpenQA.Selenium.DriverServiceNotFoundException : The wires.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at https://github.com/jgraham/wires/releases. 

Das sagt mir, dass ich den Treiber zu finden bin, aber aus irgendeinem Grund kann nicht eine Instanz von FirefoxDriver() erstellen.

Nicht sicher, was hier zu tun wäre, jede Hilfe wäre nett.

Antwort

2

Gut nach was wie eine Wildgansjagd fühlte fand ich dieses kleine Juwel in einer offenen Ausgabe auf der geckodriver github Seite. Ich habe bestätigt, dass dies mein Problem behoben hat und jetzt bin ich in der Lage, eine Instanz von Firefox-Treiber zu erstellen und erfolgreich öffnen Firefox 47. https://github.com/mozilla/geckodriver/issues/91

Hier ein Ausschnitt des Codes aus der obigen URL, falls der Link tot geht

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(); 
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"; 
IWebDriver driver = new FirefoxDriver(service); 

Hoffe das hilft anderen. Aber es gibt einen Fehler, der momentan ein Blockierungsproblem für alle meine Tests ist. Alle meine Tests greifen auf unsere internen Testumgebungen zu, die selbstsignierte Zertifikate enthalten, und es gibt einen Fehler mit Marionette, wo Sie nicht mit diesen umgehen können. https://bugzilla.mozilla.org/show_bug.cgi?id=1103196

= (

+0

@JeffC -.. Erledigt Dank für die Erinnerung, dies zu tun meinte, als ich es beantworten –

+0

@JoshuaBurns Es ist besser, einen Ausschnitt der Lösung umfasst, unten die Links gingen nur für den Fall –

+0

@SyakurRahman - Danke für den Tipp, mit dem Schnipsel aktualisiert. –