我正在运行测试,检查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
}

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