繁体   English   中英

在 javascript 中使用 Selenium 驱动程序获取 WebElement 文本内容

[英]Get WebElement text content with Selenium Driver in javascript

我想检查我使用其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'

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

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

要实际使用 getText() 的返回值(一旦计算完成),请使用then方法并向其传递一个函数。 一旦文本被计算出来,这个匿名函数就会被调用,你可以使用它(例如,断言它等于预期值):

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

或者,如果您更喜欢使用lambda 表达式

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM