量角器:预期[true,true]为真

时间:2017-06-13 21:20:13

标签: node.js protractor aurelia e2e-testing

我正在运行测试,检查div是否包含某些文本。如果它包含此文本,那么我想查看页面下方的链接是否包含相同的文本。 即,用户将在页面标题处显示EUR和USD余额,然后在页面的下方将有一个标签,其中包含名为" EUR"另一个选项卡包含一个带有文本" USD"。

的链接

当我运行脚本时,我收到错误:

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 个答案:

答案 0 :(得分:0)

请注意使用.toBeTruthy(),请参阅this post

您获得Expected [ true, true ] to be true.的原因是因为您使用element.all(by.linkText("EUR" && "GBP")).isDisplayed(),这将返回一个数组,其中每个.isDisplayed()的结果为element(因为您正在使用.all 1}})。

你所知道的是造成误报。你可以通过将expect(element.all(by.linkText("EUR" && "GBP")).isDisplayed()).toBeTruthy();更改为expect(element.all(by.linkText("Bar" && "Foo")).isDisplayed()).toBeTruthy();来测试这一点。两者都会成功。

如果你看看BDD和TDD,最好首先创建一个失败的测试用例,然后让测试用例工作。