我在基于角度的网站上有一个设置,可以打开和关闭下拉列表。如果它关闭,则它不会显示在主页面上。
使用量角器时,我需要检查开关关闭时是否存在此元素。但是,我不应该被抛入Element Not Found Error,因为它是一组中的一个测试。我该怎么做?
我试过这样做:
expect($$('.switch').count()).to.equal(0).and.notify(next);
但是我得到了一个AssertionError ...
答案 0 :(得分:30)
另一种对我有用的选择,并使用量角器“做事”的方式http://angular.github.io/protractor/#/api?view=ElementArrayFinder.prototype.all
element.all(by.css('.k-loading-image')).then(function(items) {
expect(items.length).toBe(0);
});
(我想检查装载指示灯是否消失了)
答案 1 :(得分:23)
通过使用我在文档中找到的东西来完成工作:
expect(element(by.css('.switch')).isPresent()).to.become(false).and.notify(next);
还使用断言,因此它不会破坏cucumberjs。
答案 2 :(得分:5)
我通过这样做得到了它:
expect(element(by.css('css')).isPresent()).toBeFalsy();
答案 3 :(得分:3)
包括count()
在内的所有答案都不适用于我;
typeof $$('。selector')。count()是
'object'
您必须使用承诺将count
值拉出来。
const nameSelector = '[data-automation="name-input"]';
const nameInputIsDisplayed = () => {
return $$(nameSelector).count()
.then(count => count !== 0)
}
it('should not be displayed', () => {
nameInputIsDisplayed().then(isDisplayed => {
expect(isDisplayed).toBeFalsy()
})
})
答案 4 :(得分:1)
如果你的开关是在配置中定义的,你可以这样做
let dropdownSwitch = config.switch
expect(await $('dropdown css').isPresent()).toBe(dropdownSwitch);
这将涵盖它在两种情况下的验证,当它打开或关闭时
答案 5 :(得分:0)
stalenessOf
可能是一个很好的方式:Protractor -
ExpectedConditions.stalenessOf
例如,您有一个当前打开的模态。你关闭它并期望它不存在:
element(by.css('.modal-dialog .cancel-button')).click();
browser.wait(EC.stalenessOf(element(by.css('.modal-dialog')), 60000);
expect(element(by.css('.modal-dialog')).isPresent()).toBeFalsy();