Protractor: 如何读取元素的文本值

创建于 2013-10-03  ·  3评论  ·  资料来源: angular/protractor

我正在尝试读取绑定元素的文本值。 我已经使用函数 getText() 来读取元素的文本值,但它不起作用。 有没有其他方法可以这样做

ptor = protractor.getInstance();
ptor.get('http://www.angularjs.org');

ptor.findElement(protractor.By.input("yourName")).sendKeys("Julie");

var greeting = ptor.findElement(protractor.By.binding("{{yourName}}!"));

console.log(greeting.getText());

最有用的评论

@vishalshivnath请查看文档以获取有关 webdriver 和量角器如何工作的信息 - 量角器操作返回承诺,因此您可能是一个承诺对象。

@tennisgent有一个奇怪的 webdriver 怪癖,即 getText() 对于<input>元素始终为空。 尝试改为userNameInput.getAttribute('value')

所有3条评论

我有同样的问题。 我刚刚启动并运行了量角器,但似乎无法从输入元素中获取数据。 我的测试是:

it('should allow text entry into the userName field', function(){
    userNameInput = ptor.findElement(protractor.By.input('user.userName'));
    userNameInput.sendKeys(testUserName);
    expect(userNameInput.getText()).toEqual(testUserName);
});

但测试失败:

1) 登录测试登录应该允许在用户名字段中输入文本信息:预期 '' 等于 'xacttester'。

当我观看测试时(通过用ptor.driver.sleep(2000)减慢它的速度),我看到它在字段中输入文本,但是当它调用getText() ,它返回一个空字符串。

有人对我做错了什么有任何想法吗?

@vishalshivnath请查看文档以获取有关 webdriver 和量角器如何工作的信息 - 量角器操作返回承诺,因此您可能是一个承诺对象。

@tennisgent有一个奇怪的 webdriver 怪癖,即 getText() 对于<input>元素始终为空。 尝试改为userNameInput.getAttribute('value')

可以使用 $ 而不是browser.findElement',

  it('should return the same result as browser.findElement', function() {
    browser.get('index.html');

   // var e = element(by.id('new_todo'));
    var e = $('#new-todo');
    e.sendKeys("foo");

    expect(e.getAttribute('value')).toEqual(
      "foo")
  });
此页面是否有帮助?
0 / 5 - 0 等级