0

我正在使用量角器和 Cucumber 来测试 React 项目。在此过程中,我有一些元素将具有可见性:隐藏/可见,我想使用 Protractor 的 isDisplayed 或 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.isDisplayed 和 inputfelt.isPresent 并且对于这三个测试都通过了。

我看不出它应该如何通过,因为该字段不能既存在又不存在。

我用错了吗?

4

2 回答 2

0

我认为您应该使用包装器,因为您使用的是承诺。因此,任何已解决的承诺都通过了测试。试试下面的代码:

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)
    ]);
});
于 2016-11-08T15:07:38.613 回答
0

您现在可以使用protractor-react-selector通过 react 的组件、道具和状态来识别 Web 元素。这将自动等待在您的应用中加载 REACT,然后识别 Web 元素。它可以使您免于做大量的变通方法。

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

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

让我知道这是否有帮助!

于 2020-05-01T06:24:37.890 回答