在我正在测试的页面上,用户可以使用单一货币或多种货币(即欧元和美元),货币/货币将显示在页面顶部的同一div中。 如果用户有多种货币,则每种货币的选项卡将显示在页面的下方,如果用户只有一种货币,则不会显示任何选项卡(因为用户无需切换选项卡)。
我可以通过检查标题中包含的文字是否与货币标签中包含的文字相匹配来测试多种货币用户。
但是,由于单一货币没有标签显示,我不确定如何测试。
例如,如果我只有一个' EUR'货币,是否有办法做
之类的事情if element(by.className("currencies"))contains 'EUR'
&& doesn't contain 'USD' && doesn't contain 'GBP'
expect element(by.className("tabs").toDisplay.toBeFalsy()
这是页面对象文件的代码
this.checkCurrency = function(currency) {
var checkBalance = element(by.className("balances"));
checkBalance.getText().then(function (text) {
if (text.indexOf("GBP" && "EUR")>= 0) {
expect(element.all(by.linkText("GBP")).isDisplayed()).toBeTruthy();
console.log("EUR GBP buyer");
}
else if (text.indexOf("GBP" && "USD")>= 0) {
expect(element.all(by.linkText('USD')).isDisplayed()).toBeTruthy();
console.log("USD GBP buyer");
}
else
{
console.log("false");
}
});
};

答案 0 :(得分:0)
根据你的描述,我不太确定失败的地方。通常,您希望将这种逻辑保留在页面对象之外。您的测试应该了解页面应处于什么状态并调用不同的函数。我知道这并不总是可行的,但如果可以的话,它会变得更好。这是一些应该有所帮助的一般条件建议。
您可以捕获成功状态和失败的承诺状态。大多数人使用pass函数,但忘记了fail函数。
promise.then(passFunction, failFunction)
您可以通过多种不同方式使用它。如果你意识到量角器中的几乎所有东西都会返回一个承诺。 例如:
element(by.className("currencies")).getText()
.then(
function(text) {
//check on something
},function(error){
//don't check on something
if(someCondition) {
throw error;
} else {
//the test continues
}
});
您甚至可以使用并期待
expect(element(by.className("currencies")).getText()).not.toContain("EUR")
.then(
function(passed) {
//check on something
},function(failed){
//don't check on something
if(someCondition) {
throw failed;
} else {
//the test continues
}
});
或简单的findElement
element(by.className("currencies"))
.then(
function(element) {
//check on something
},function(error){
//don't check on something
if(someCondition) {
throw failed;
} else {
//the test continues
}
});