Protractor: browser.isElementPresent()给出true和false两个值



我正在使用量角器和Cucumber来测试React项目。在这个过程中,我有一些元素将具有可见性:隐藏/可见,我想使用量角器的isdisplay或isPresent来测试。

我写了一个小测试,因为我得到一些奇怪的输出,它看起来像这样:
  this.Then(/^skal jeg kunne legge inn et nummer$/, function () {
    var inputfelt = element(by.css(".mdl-textfield__input"))
    expect(browser.isElementPresent(inputfelt)).to.eventually.equal(true)
    expect(browser.isElementPresent(inputfelt)).to.eventually.equal(false)
});

这是我使用browser.isElementPresent的最后一个版本。我还使用了inputfelt。显示和输入感觉。对他们三个人来说,这个测试都通过了。

我看不出它怎么能通过,因为字段不能同时存在和不存在。

我用错了吗?

我认为您应该使用包装器,因为您正在使用承诺。因此,任何一个被解决的承诺都通过了考验。试试下面的代码:

this.Then(/^skal jeg kunne legge inn et nummer$/, function () {
    var inputfelt = element(by.css(".mdl-textfield__input"))
    return protractor.promise.all([
      expect(browser.isElementPresent(inputfelt)).to.eventually.equal(true),
      expect(browser.isElementPresent(inputfelt)).to.eventually.equal(false)
    ]);
});

你现在可以使用protractor-react-selector来根据react的组件、道具和状态来识别web元素。这将自动等待在你的应用程序中加载REACT,然后识别web元素。它可以节省你做额外的工作。

您可以通过以下方式标识您的目标元素:

const myElement = element(
    by.react('MyComponent', { someBooleanProp: true }, { someBooleanState: true })
);

让我知道这是否有帮助!

相关内容

  • 没有找到相关文章

最新更新