Angularjs 如何获取量角器中所有元素的文本
我想在进入谷歌搜索栏“Webdriver”后获取所有Angularjs 如何获取量角器中所有元素的文本,angularjs,protractor,Angularjs,Protractor,我想在进入谷歌搜索栏“Webdriver”后获取所有li建议文本。我编写了如下代码: this.getElements = function(){ element.all(by.css('ul.sbsb_b')).then(function(text){ for(var i=0; i < text.length;i++) { console.log(text[i].getText()); } }); }; 而不是建议的文本
li
建议文本。我编写了如下代码:
this.getElements = function(){
element.all(by.css('ul.sbsb_b')).then(function(text){
for(var i=0; i < text.length;i++)
{
console.log(text[i].getText());
}
});
};
而不是建议的文本值。要从getText()打印值,需要使用.then()解析承诺 类似这样的内容:
text[i].getText().then(function(textValue)
{
console.log(textValue);
});
问候,Sakshi对于每个元素的循环,您还可以执行以下操作:
element.all(by.css('ul.sbsb_b')).each(function(element, index) {
element.getText().then(function(text) {
console.log(text);
});
});
量角器中有一组类似javascript数组的函数,允许您
筛选()
或映射()
异步承诺的结果。例如,如果原始element.all(by.css('something')
将返回ElementFinder
s的列表,map()
允许将其转换为getText()
s的数组,该数组在解析状态下只是一个字符串数组。然后你可以随心所欲地使用它
element.all(by.css('something')).map(function(elm) {
return elm.getText();
}).then(function(texts) {
texts.forEach(...);
});
下一步你应该做什么
this.getElements = function(){
element.all(by.css('ul.sbsb_b')).getText().then(function(text){
console.log(text);
});
};
我们需要指定getText()来获取element.all中的文本列表
<ul class="menu">
<li>Home</li>
<li> About Us</li>
</ul>
element.all(by.css('.menu li')).getText().then(function(menus) {
expect(menus.length).toBe(2); //true
console.log(menus);
});
需要更多这是一个老问题,但当我做了一些ElementSelector.getText()时仍然是这样;我得到的是一个字符串而不是数组,因此我根据“\n”分割字符串 范例
someElementSelector.getText().then(function(text){
var arrayA = text.split("\n");
// this gives me ['one','two','three']
})
这为我们提供了一个包含多个文本的元素中的文本数组。getText()不返回文本。它回报了一个承诺:你能用一个有效的例子来详细说明它吗。我是这方面的新手。提前谢谢。如果你解释一下你的代码,这将是一个更好的答案。+1代表map(),所以我可以这样做:
elements(){return$$('li')。map(e=>e.getText())作为承诺;}
请不要在回答中提问。在确定你的问题还没有被回答之后,在记住这一部分的情况下问一个新问题。很抱歉,让我编辑我发布的答案LOL。我将重新表述我的答案
['Home','About Us']
someElementSelector.getText().then(function(text){
var arrayA = text.split("\n");
// this gives me ['one','two','three']
})