gpt4 book ai didi

javascript - Protractor 和 for 循环

转载 作者:行者123 更新时间:2023-11-28 18:06:58 25 4
gpt4 key购买 nike

我对下面在 Protractor 中测试的代码有疑问。也就是说,正如您所看到的,我首先找到标签列表,然后检查其数量(三个)。然后我有一个第一个循环,将每个标签与表中的值进行比较。这里我用i <table.length然后它就可以正常工作了。在第二个循环中我使用 labels.count()它等于三,因为我之前检查过它,但它根本不起作用。无论检查的输出是什么, Protractor 都会经历这个循环,并且测试以“通过”结束。谁能告诉我为什么i <table.length循环中的条件有效并且 i<labels.count不是吗?

//labels list
var labels = element.all(by.xpath("//form[@name='form']//label"));

//test start
describe('angularjs homepage', function() {
it('test1', function() {
browser.get('http://www.way2automation.com/angularjs-protractor/registeration/#/login');

//shows 3
labels.count().then(function(text){
console.log( text);
});


var table = ["Usern1ame","Password","Username *"];

//first loop -> this one works if there is a difference between 'table' and element from 'label' list
for (var i = 0; i <table.length; i++) {
expect(labels.get(i).getText()).toEqual(table[i]);
}

//this one doesn't -> if there is a difference between 'table' and 'label'
//list nothing happens, no errors, test passes
for (var i = 0; i <labels.count(); i++) {
expect(labels.get(i).getText()).toEqual(table[i]);
}





});

});

最佳答案

在您的示例中,labels.count() 是一个 promise ,您不能直接使用它。要获得 count 的值,您需要首先解决 Promise。看下面的代码,

labels.count().then(function(labelCount){
for (var i = 0; i <labelCount; i++) {
expect(labels.get(i).getText()).toEqual(table[i]);
}
})

关于javascript - Protractor 和 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com