Ответ 1
Получил то, что работает, используя что-то, что я нашел в документах:
expect(element(by.css('.switch')).isPresent()).to.become(false).and.notify(next);
Также использует утверждения, поэтому он не прерывает cucumberjs.
У меня есть настройка на моем веб-сайте angular, который включает и выключает выпадающее меню. Если он выключен, он не отображается на главной странице.
С помощью Protractor мне нужно проверить, нет ли этого элемента, когда переключатель выключен. Однако я не должен быть брошен в Element Not Found Error, так как это один тест в множестве из многих. Как мне это сделать?
Я попытался сделать:
expect($$('.switch').count()).to.equal(0).and.notify(next);
Но я получаю AssertionError с этим...
Получил то, что работает, используя что-то, что я нашел в документах:
expect(element(by.css('.switch')).isPresent()).to.become(false).and.notify(next);
Также использует утверждения, поэтому он не прерывает cucumberjs.
Еще один вариант, который работал у меня немного лучше, и использует метод "транспортир" для выполнения действий 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);
});
(Я хотел проверить, что индикатор загрузки исчез)
ни один из этих ответов, которые включают count()
, работал у меня;
typeof $$ ('. selector'). count() is
'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()
})
})
Я получил это, сделав это:
expect(element(by.css('css')).isPresent()).toBeFalsy();
Эти ответы не ждут исчезновения элемента. Чтобы дождаться его исчезновения, вам нужно использовать ExpectedConditions, как показано ниже. InvisibilityOf определяет, покинул ли элемент DOM. См. Его в документах: https://www.protractortest.org/#/api?view=ProtractorExpectedConditions.
export const invisibilityOf = (el) =>
browser.wait(ExpectedConditions.invisibilityOf(el) as any, 12000,
'Element taking too long to disappear in the DOM')
const el = element(by.css(arg1))
return invisibilityOf(el)
stalenessOf
может быть хорошим способом: Транспортир -
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();