分度器2.0では、1つの要素が表示されている場合にexpect()
をチェックインしています。私はfalseを期待していますが、奇妙なことは次のエラーが発生することです:
NoSuchElementError:ロケーターを使用して要素が見つかりません:By.id( "userForm")
私のコードは:
describe('closeModal', function() {
it('should close the alert that appears after registration.', function(){
element(by.id('closeAlertModalButton')).click();
expect(element(by.id('userForm')).isDisplayed()).toBeFalsy();
});
});
要素がページ上にないためにこのエラーが発生することは理解していますが(確認したいのですが)、エラーではなくfalseを取得すべきではありませんか?
isDisplayed()
は要素が表示されているかどうかを確認しますが、DOMに要素が存在するかどうかを確認する必要があります。使用するには isElementPresent()
または- isPresent()
:
expect(browser.isElementPresent(element(by.id('userForm')))).toBe(false);
expect(element(by.id('userForm')).isPresent()).toBe(false);
こちらもご覧ください:
このエラーはWebDriverの動作の一部です。そのような場合には、 isPresent または isElementPresent を使用することをお勧めします
表示されている要素が表示されていない場合にAを実行し、要素が見つからない場合は例外を無視します。
element.isDisplayed().then(function(visible){
if (visible) {
// do A when element visible
}else{
// do B when element not visible
}
}, function () {
//suppress exception if element is not found on page
});