2017-03-28 7 views
0

Ich verwende WebdriverIO für den folgenden TestWie kann ich auf den Test warten?

webdriverio 
    .remote(options) 
    .init() 
    .url('http://www.google.com') 
    .getTitle().then(function(title) { 
     console.log('Title was: ' + title); 
    }) 
    .end(); 

jedoch mein ISP eine Überprüfung Seite zwischen google.com Web-Virus liefern, so dass der Test immer die Virenprüfung Seitentitel zurück. Wie kann ich sicherstellen, dass das Ergebnis immer Google zurückgibt?

Antwort

0

Mit der Funktion pause(time) können Sie den Test vorübergehend anhalten, bis Sie zu Google weitergeleitet werden.

webdriverio 
.remote(options) 
.init() 
.url('http://www.google.com') 
.pause(5000) 
.getTitle().then(function(title) { 
    console.log('Title was: ' + title); 
}) 
.end(); 
+0

Verwenden Sie keine Pausen in Ihrem Test. Verwenden Sie stattdessen explizite Wartezeiten. – Andrii

1

Pausen in Ihren Tests zu verwenden ist eine schlechte Praxis. Es ist besser, stattdessen explizite Wartezeiten zu verwenden.

z. Sie können die waitUntil-Methode verwenden, die von Wdio API bereitgestellt wird. Sie können also eine Hilfsfunktion erstellen, um auf die erwartete URL zu warten.

Hier wird das Beispiel in ES6 ist:

function waitForUrl(url, timeout) { 
    browser.waitUntil(() => browser.getUrl().includes(url) 
    }, timeout, `Expected url must be ${url}`) 
} 

Sie einfach Funktion (oder Versprechen) als WAITUNTIL Zustand zusammen mit Timeout (in ms) passieren kann, Fehlermeldung und Intervall (auch in ms, ist Standardwert 500ms). Also wird waitUntil warten, bis diese Bedingung mit einem truthigen Wert erfüllt ist. Andernfalls wird ein Fehler ausgelöst.

Verwandte Themen