如何从元素中获取文本?

时间:2015-08-24 17:17:46

标签: html angularjs protractor

我试图从量角器获取元素的文本。

我有类似

的东西
var te = element.all(by.css('.menu li')).get(0).getText();

console.log(te)

html

 <ul class="menu">
        <li>Test first</li>
        <li>test second</li>
        <li>third</li>
 </div>

我想要的只是'先测试'但我的控制台日志显示整个量角器对象。

{ ptor_: 
   { controlFlow: [Function],
     schedule: [Function],
     setFileDetector: [Function],
     getSession: [Function],
     getCapabilities: [Function],
     quit: [Function],
     actions: [Function],
     touchActions: [Function],
     executeScript: [Function],
     executeAsyncScript: [Function],
     call: [Function],
     wait: [Function],
     sleep: [Function],
     getWindowHandle: [Function],
     getAllWindowHandles: [Function],
     getPageSource: [Function],
     close: [Function],
     getCurrentUrl: [Function],
     getTitle: [Function],
     findElementInternal_: [Function],
     findDomElement_: [Function],
     findElementsInternal_: [Function],
     takeScreenshot: [Function],
     manage: [Function],
     switchTo: [Function],
     driver: 
      { session_: [Object],
        executor_: [Object],
        flow_: [Object],
        fileDetector_: null },
  …..mroe

我也试试

var te = element.all(by.css('.menu li')).get(0).getSize();

var te = element.all(by.css('.menu li')).first().getSize();

但仍然获得整个对象。任何人都可以帮我解决这个难题吗?非常感谢!

2 个答案:

答案 0 :(得分:3)

Protractor中的所有(公共)函数可能都是promises,因此要获取元素的文本,您需要编写以下代码:

element.all(by.css('.menu li')).get(0).getText().then(function(text) {
    console.log(text);
});

相同的结构适用于.getSize()。

只有量角器能够自动解决这些承诺。

expect(myElement.getText()).toEqual("resolved");

答案 1 :(得分:0)

试试这个JavaScript代码:

x=document.getElementsByTagName("li");
te=x[0].innerHTML;

现在使用te创建日志。