2016-03-04 107 views
1

在分量角器運行下一步之前,您使用什麼函數等待幾秒鐘?我有一個文本跨度,我想等待文本從外部來源更改,然後再次檢查它。等待幾秒鐘後再運行下一步量角器

HTML:

<div class="panel"> 
    <button type="submit" onclick="promptTransaction()">Load Transaction</button> 
    <button type="submit" onclick="handleMessage()">Post Message</button> 
    <select name="messageType" class="messageType"> 
     <option>Submit</option> 
     <option>Amount</option> 
    </select> 
    <div class="message-box"><b>Sending message to hosted page:</b><span class="message-out">waiting...</span></div> 
    <div class="message-box"><b>Receiving message from hosted page:</b><span class="message-in">waiting...</span></div> 
</div> 

所以當我點擊「發佈消息」按鈕,我應該接收來自外部源的新文本,然後用一個類名「消息,在」改變量程。

目前,我的測試是這樣的:

 element(by.cssContainingText('button','Post Message')).click().then(function() { 

      //WAIT FOR 10 seconds 

      element(by.css('.message-box .message-in')).getText().then(function (text) { 
       var response = JSON.parse(text); 

       expect(response.type).toBe('msax-cc-result'); 
       expect(response.value.Transaction).toBe('Tokenize'); 
       expect(response.value.CardToken).not.null(); 
      }) 
     }); 

此外,在從外部源返回的文字結果,我把它轉換成JSON對象,但不能因爲有一個「\」在它上面,有一種方法可以在將它轉換爲對象之前將其刪除。

傳遞的數據:

{"type":"msax-cc-result","value":"{\"Transaction\":\"Tokenize\",\"CardToken\":\"ba9c609f-45fc-49aa-b8b2-ecaffbc56d43\"}"} 
+0

[在量角器測試中有可能在測試運行之間等待的方法](http://stackoverflow.com/questions/25301587/in-protractor-test-is-there-a-way-to-wait -between-試運行) – SlashmanX

回答

1

通常這是browser.sleep(N),但一般來說不建議引入瀏覽器動作之間硬編碼延遲。一個更好的機制是一個明確的等待 - 等待在頁面上使用browser.wait()來滿足一個特定的條件,它會定期檢查預期的狀態狀態,直到發生超時。與browser.sleep()相比,browser.wait()將在等待條件變爲真實之後立即停止等待

舉例來說,如果你知道要等到什麼文字,textToBePresentInElement應符合:

var EC = protractor.ExpectedConditions; 
var elm = $(".message-out"); 
browser.wait(EC.textToBePresentInElement(elm, "Some message"), 5000); 

或者,你可能例如,等待waiting...不存在於要素:

browser.wait(EC.not(EC.textToBePresentInElement(elm, "waiting...")), 5000); 

其中5000是以毫秒爲單位的超時。

相關問題