2017-06-13 54 views
0

我正在運行一個測試,檢查div是否包含某些文本。如果它包含此文本,則我想要查看頁面下方的鏈接是否包含相同的文本。 即用戶將在頁面的標題處顯示歐元和美元餘額,然後在頁面下方出現一個標籤,其中包含一個名爲「EUR」的鏈接,另一個標籤包含一個包含文本「USD」的鏈接。量角器:預期[true,true]爲真

當我運行我的腳本中,我得到的錯誤:

Expected [ true, true ] to be true. 

這是我的代碼從頁面對象文件

browser.wait(EC.visibilityOf(element(by.className("currencies")), 4000)); 
 
    var checkBalance = element(by.className("currencies")); 
 
     checkBalance.getText().then(function (text) { 
 
      if(text.indexOf("EUR") >-1 && text.indexOf("GBP") >-1){ 
 
     //check if currencies div contains "EUR" and "GBP" 
 
      expect(element.all(by.linkText("EUR" && "GBP")).isDisplayed()).toBe(true); 
 
    //check if link with text "EUR" and link with "GBP" is displayed 
 
     }

+1

嘗試使用'.toBeTruthy();'如果你有多個匹配的元素? –

+0

謝謝,我之前實際使用過.toBeTruthy(),並且不得不切換到BeTrue(),並在此期間忘記了它。這幫了我的力量! – Edmond

回答

0

注意使用.toBeTruthy()的,見this post

你之所以得到Expected [ true, true ] to be true.是因爲你用element.all(by.linkText("EUR" && "GBP")).isDisplayed(),這將返回一個數組,每個element.isDisplayed()結果(因爲你使用.all)。

你所知道的是創造了一個誤報。您可以通過將expect(element.all(by.linkText("EUR" && "GBP")).isDisplayed()).toBeTruthy();更改爲expect(element.all(by.linkText("Bar" && "Foo")).isDisplayed()).toBeTruthy();來進行測試。兩者都會成功。

如果你看BDD和TDD,最好先創建一個失敗的測試用例,然後使測試用例工作。

+0

感謝您的幫助,我嘗試過在原始文章中使用'toBe(true);'但那不適合我。什麼是BDD和TDD?如果你想使用'toBe();'然後使用'toBe([true,true]);'因爲你需要比較一個數組和數組,所以我不確定如何繼續 – Edmond

+0

。 BDD =行爲驅動開發,TDD =測試驅動開發。 您是否也嘗試使用不存在鏈接文本的期望? – wswebcreation

+0

感謝您的回覆。是的,當我將值更改爲「bar」和「foo」時,它仍然通過。 'toBe([true,true)];'已經幫了我很多,謝謝。我現在的問題是,如果我去'expect(element.all(by.linkText(「EUR」&&「foo」))。isDisplayed()).Be([true,true]);'它會通過檢測「EUR」是否存在,它似乎不關心「foo」。任何想法如何改變這一行代碼,以便它將檢查「EUR」和「GBP」是否存在?如果我去'expect(element.all(by.linkText(「bar」&&「foo」))isDisplayed())。toBe([true,true]);'so它會工作部分正確 – Edmond

相關問題