【问题标题】:Protractor: Expected [ true, true ] to be true量角器:预期 [真,真] 为真
【发布时间】:2017-06-13 21:20:13
【问题描述】:

我正在运行一个测试来检查 div 是否包含某些文本。如果它包含此文本,那么我想查看页面下方的链接是否包含相同的文本。 即用户将在页面标题处显示欧元和美元余额,然后页面下方将有一个选项卡包含一个名为“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
      }

【问题讨论】:

  • 如果您有多个匹配的元素,请尝试使用.toBeTruthy();
  • 谢谢,我之前实际上使用过 .toBeTruthy() 并且不得不切换到 BeTrue() 并且在此期间忘记了它。这对我有帮助!

标签: node.js protractor aurelia e2e-testing


【解决方案1】:

注意使用.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,最好先创建一个失败的测试用例,然后让测试用例工作。

【讨论】:

  • 感谢您的帮助,我已尝试在原始帖子中使用toBe(true);,但这对我不起作用。什么是 BDD 和 TDD?我不确定如何继续
  • 如果您想使用toBe();,请使用toBe([true, true]);,因为您需要将数组与数组进行比较。 BDD = 行为驱动开发,TDD = 测试驱动开发。您是否也尝试过使用不存在的链接文本?
  • 感谢您的回复。是的,当我将值更改为“bar”和“foo”时,它仍然通过了。 toBe([true, true)]; 帮了我很多忙,谢谢。我现在的问题是,如果我去expect(element.all(by.linkText("EUR" && "foo")).isDisplayed()).toBe([true, true]); 它会通过,因为它检测到“EUR”存在并且它似乎并不关心“foo”。知道如何更改这行代码以检查“EUR”和“GBP”是否都存在吗?如果我去expect(element.all(by.linkText("bar" && "foo")).isDisplayed()).toBe([true, true]);,它会失败,所以它工作部分正确
  • 创建 2 个期望。 by.linkText() 接受字符串,"EUR" && "GBP" 将产生 "GBD" 。如果你这样做expect(element.(by.linkText("EUR")).isDisplayed()).toBe(true)expect(element.(by.linkText("GBP")).isDisplayed()).toBe(true)
  • 又回来了!我使用expect(element.(by.linkText("EUR")) 的问题是有多个同名链接,我得到more than one element found for locator By(link text, EUR) the first result will be used 如果我使用element.all,我得到我原来的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多