如何等待元素在CUCUBER JS中可见?

时间:2017-04-10 14:17:37

标签: javascript selenium-webdriver cucumber

我得到了:

NoSuchElementError: no such element: Unable to locate element

我的等待功能根本没有等待。一旦到达该步骤,它就会在没有等待设定的等待时间的情况下失败。

在我的world.js我定义了我的驱动器

var driver = buildChromeDriver();
  ...
  var World = function World() {
  ...
  this.driver = driver;
}

这是我的步骤:

  this.Then(/^xxxxx$/, function () {
  this.driver.wait(function () {
      return this.driver.findElement({ xpath: props.woocomerceSelectors.viewCart }).isDisplayed();
  }, 4000);});

1 个答案:

答案 0 :(得分:1)

等待将循环,直到循环内返回非假答案。

您的代码目前正在做的是返回待处理的承诺,这不是假的,因此不会循环。

如果你从这个承诺中获取东西,并返回它是否等于真,那么你应该有更多的运气。

this.Then(/^xxxxx$/, function () {
    this.driver.wait(function () {
        return this.driver.findElement({xpath: props.woocomerceSelectors.viewCart}).isDisplayed()
            .then(function (isDisplayed) {
                return isDisplayed == true;
            });
    }, 4000);
});  

我希望这会有所帮助。