Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何获取量角器中所有元素的文本_Angularjs_Protractor - Fatal编程技术网

Angularjs 如何获取量角器中所有元素的文本

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()); } }); }; 而不是建议的文本

我想在进入谷歌搜索栏“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());
      }
  });
};

而不是建议的文本值。

要从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'] 
})