wd waitForElementBy ...和断言器用法

时间:2013-12-02 21:04:54

标签: javascript webdriver

我在几个测试中成功使用了提供here的库,但现在我仍然试图按照他们的文档使用断言作为waitForElementByLinkText API方法中的传递函数。

这是我定义Asserter的地方:

function Asserter(_assert){
  this.assert = _assert;
}

/**
 * asserters.isVisible
 *
 * @asserter
 */
var isDisplayed = new Asserter(
  function(el,cb) {
    el.isDisplayed(function(err, displayed) {
      if(err) { return cb(err); }
      cb(null, displayed);
    });
  }
);

module.exports = {
  Asserter: Asserter,
  isDisplayed: isDisplayed
};

然后在我的链接脚本中,我试图按如下方式使用它,但console.log在元素可见之前执行:

.get('http://mydomain.com/mypage')
.elementByLinkText('Reset', function(err, el){
  browser.next('clickElement', el, noop);
})
.waitForElementByLinkText('This is the link text', isDisplayed, 10000, 100, function(err){
  console.log('The page has updated!');
})

我相信我的代码使用的是链接语法的弃用版本,这是支持SeBuilder发布的遗留代码所必需的,但是很难跟踪所有使用新方法的示例。

1 个答案:

答案 0 :(得分:3)

您无需重新定义常用的断言器,请参考此处的新示例:

https://github.com/admc/wd/blob/master/examples/deprecated/wait-for-simple.js

如果您需要更多帮助,请提供一些html / js样本,否则很难弄清楚您实际想要实现的目标。