2017-03-28 57 views
0

我使用WebdriverIO以下測試如何添加等待測試?

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

然而,我的ISP提供與google.com網頁病毒檢查頁面,因此測試總是返回查毒頁面標題。我怎樣才能確保結果總是返回Google?

回答

0

您可以使用pause(time)函數暫停您的測試一段時間,直到您被重定向到Google。

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

請勿在測試中使用暫停。改用顯式等待。 – Andrii

1

在測試中使用暫停是一種不好的做法。最好使用顯式等待。

E.g.您可以使用由Wdio API提供的waitUntil方法。所以,你可以創建幫助函數來等待預期的URL。

這裏是ES6的例子:

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

可以簡單地傳遞函數(或諾)作爲最好推遲到條件與超時(毫秒),錯誤消息和間隔(也以毫秒沿,默認值是500毫秒)。所以,waitUntil會一直等到這個條件滿足真實值。否則,將會拋出錯誤。