2017-01-24 3 views
0

Ich benutze Gurke-js, um Tests mit Selen-Webdriver zu führen. Ich möchte eine Screenshot-Aufnahme des Browsers hinzufügen, wenn ein beliebiger Zeitpunkt überschritten wird. Ich benutze globale Timeout für alle Schritte wie:Gibt es ein Timeout-Ereignis in Gurke-js

this.setDefaultTimeout(3 * 60 * 1000); 

in meinem Haken Datei.

Wie registriere ich mich für das globale Timeout-Ereignis (wenn es überhaupt existiert)?

+0

Ist es nur auf Timeout, die Sie den Screenshot wollen genommen werden, oder Wäre es besser, wenn bei einem Fehler ein Screenshot erstellt wird? –

+0

Ich bevorzuge eine Zeitüberschreitung, weil die meisten Male die Fehler sind, weil "Warten auf Element" Anrufe Zeitüberschreitung sind. Ich möchte einen Screenshot dieser speziellen Fälle machen, damit ich sagen kann, warum das Element nie erscheint. – Buzzy

Antwort

1

Selen WebDriver js Funktion zur Verfügung gestellten Screenshot zu bekommen, müssen Sie einfach, es zu benutzen in After, die @AfterClass Tag in TestNG

ähnlich ist das After Szenario nach jedem Szenario in Feature ausführt und prüfen Sie das Ergebnis das Szenario, es ist fehlgeschlagen es wird den Screenshot. Der Grund für das Scheitern kann alles, wie ein Fehler sein, oder DEFAULT_TIMEOUT

Sie müssen dies in Ihrem world.js hinzufügen

this.After(function (scenario) { 

    if (scenario.isFailed()) { 

     // take a screenshot 
     // driver.takeScreenshot() is defined in webDriver.js 
     return driver.takeScreenshot() 
      .then(function (screenShot) { 
       scenario.attach(new Buffer(screenShot, 'base64'), 'image/png'); 
       return driver.close() 
       .then(function() { 
        return driver.quit(); 
       }); 
      }); 
    } 
    else { 
     return driver.close() 
      .then(function() { 
       return driver.quit(); 
      }); 
    } 
});