使用Selenium Driver在javascript中获取WebElement文本内容

时间:2017-01-21 09:07:42

标签: javascript selenium-webdriver

我想检查我使用id检索的元素是否包含预期的文本值。

var driver = require('selenium-webdriver');
var By = driver.By;

var elem = this.driver.findElement(By.id('my_id'));
assert.equal(elem.getText(), 'blablabla');

不幸的是,这不是一条路:

 AssertionError: ManagedPromise {
   flow_:
    ControlFlow {
      propagateUnhandledRejections_: true,
      activeQueue_:
       TaskQueue {
      == 'blablabla'

我无法找到如何进行简单检查的示例。

1 个答案:

答案 0 :(得分:1)

原因是elem.getText()实际上是 Promise 。这意味着,它将以异步方式执行,并且其结果将在稍后的时间点提供。 getText()的返回值不是实际文本,而是指向该异步执行的指针。

要实际使用getText()的返回值(一旦计算完毕),请使用 then 方法并将其传递给函数。一旦计算了文本,就会调用此匿名函数,并且可以使用它(例如,断言它等于期望值):

var elem = driver.findElement(By.id('mydiv'));
elem.getText().then(function(s) {
  assert.equal(s, "content");
});

或者,如果您更喜欢使用lambda expressions

elem.getText().then(s => assert.equal(s, "content"));