wake-up-neo.com

Winkelmesser, mit isDisplayed () bekomme ich NoSuchElementError: Kein Element mit Locator gefunden

In Winkelmesser 2.0 prüfe ich in expect(), ob ein Element angezeigt wird. Ich erwarte ein falsches, aber das Merkwürdige ist, dass ich folgenden Fehler bekomme:

NoSuchElementError: Kein Element mit locator: By.id ("userForm") gefunden

Mein Code lautet:

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();
    });
});

Ich verstehe, dass ich diesen Fehler bekomme, weil das Element nicht länger auf der Seite ist (möchte ich bestätigen), aber sollte ich nicht einen falschen und keinen Fehler erhalten?

23
Mikel

isDisplayed() würde prüfen, ob ein Element sichtbar ist oder nicht, aber Sie müssen prüfen, ob ein Element in DOM vorhanden ist oder nicht. Verwenden Sie isElementPresent() oder isPresent() :

expect(browser.isElementPresent(element(by.id('userForm')))).toBe(false);
expect(element(by.id('userForm')).isPresent()).toBe(false);

Siehe auch:

32
alecxe

Dieser Fehler ist Teil des Verhaltens von WebDriver. In solchen Fällen sollten Sie isPresent oder isElementPresent besser verwenden.

2
Vasiliy Vanchuk

Wenn das Element "A" sichtbar ist, wenn es nicht "B" ist, ignorieren Sie die Ausnahme, wenn das Element nicht gefunden wurde:

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
});
1