Javascript 量角器:可以同时使用多个.get()吗?
我的措辞可能很糟糕,但我有一个Javascript 量角器:可以同时使用多个.get()吗?,javascript,node.js,automation,protractor,aurelia,Javascript,Node.js,Automation,Protractor,Aurelia,我的措辞可能很糟糕,但我有一个类,元素中有多个,我想打印前五个条目,但不确定如何进行。我可以使用.get(1)等打印单个条目,但我不确定如何一起使用.get(1)`.get(2)`.get(3),或者如果可能的话。 这是我在页面对象文件中处理它的方式 checkFigures(数字){ 浏览器睡眠(8000); var checkBalance=element.all(by.css('ul.legend number>li')).get(1); checkBalance.getText().t
类,元素中有多个,我想打印前五个条目,但不确定如何进行。我可以使用.get(1)
等打印单个条目,但我不确定如何一起使用.get(1)`.get(2)`.get(3)
,或者如果可能的话。
这是我在页面对象文件中处理它的方式
checkFigures(数字){
浏览器睡眠(8000);
var checkBalance=element.all(by.css('ul.legend number>li')).get(1);
checkBalance.getText().then(函数(文本){
console.log(文本);
//打印第二个项
});
}
有一个CSS选择器“:lt”(小于),可以与jQuery一起使用
$("ul.deposit li:lt(5)").size(); //5
你能用它吗
$("ul.deposit li:lt(5)").each(
function(i){
console.info(i + " - " + $(this).text());
});
var组合=“”;
函数组合文本(a){
合并=(合并的.concat(“”)).concat(a);
}
var checkBalance=element.all(by.css('ul.legend number>li');
对于(变量i=0;i<5;i++){
combineText(checkBalance[i].getText());
}
browser.driver.sleep(0)。然后(函数(){
控制台日志(组合);
});
您可以在ElementArrayFinder上调用.each()。使用filter()或map()可以获取要查找的元素
$('ul.deposit').$('li')//获取父ul然后获取所有子li
.filter((元素,索引)=>{//过滤掉前5个元素
返回指数<5
})
.each((元素,索引)=>{//对于5个元素中的每一个,请执行以下操作。(顺序不保证)
return元素.getText().then((text)=>{
控制台信息(索引+“-”+文本)
})
});
感谢您的回复,我正在使用Aurelia,使用量角器可能会有点尴尬,它无法识别ul。存款李:lt(5)
我收到一条消息,说明“指定了无效或非法的选择器”感谢您的帮助,当我运行上述代码时,我得到了“不要在循环中生成函数”警告:非常感谢您花时间使用此a.getText()。然后(函数(text){
导致以下错误:失败:无法读取未定义的属性“getText”我已尝试查看是否可以解决此错误,但不确定现在要做什么?您好,我收到一条错误消息说“无法读取未定义的属性“getText”,我不确定传递到getText()中的内容
由于函数在使用getText
之后才被调用,非常感谢它的有效性,我实际上使用了一种更难看的方法来对前五个元素进行求和,但是你的方法更干净。我的问题是,我将如何对文本进行求和。我使用的是控制台.log(index+“-”+text.toString()。replace(/\D/g,”)
以数字格式打印元素,但如果我可以打印五个元素的总和,这将是一个理想的选择。我目前可以使用不同的方法来执行此操作,但这比使用filter()和map()要复杂得多,这取决于您是否需要可以使用或的索引。
var combined = '';
function combineText(a){
combined = ( combined.concat(' ') ).concat(a);
}
var checkBalance = element.all(by.css('ul.legend-numbers> li'));
for(var i = 0; i < 5; i++){
combineText(checkBalance[i].getText());
}
browser.driver.sleep(0).then(function () {
console.log(combined);
});
$('ul.deposit').$$('li') //get parent ul then all child li
.filter((elements, index) => { //filter out the first 5 elements
return index < 5
})
.each((element, index) => { //for each of the 5 elements do the following. (order is not guaranteed)
return element.getText().then((text) => {
console.info(index + " - " + text)
})
});