我正在使用量角器和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 })
);
让我知道这是否有帮助!