2015-05-07 4 views
18

Nel goniometro 2.0, sto verificando un expect() se un elemento è visualizzato. Mi aspetto un falso, ma la cosa strana è che ottengo seguente errore:Goniometro, con isDisplayed() ottengo NoSuchElementError: Nessun elemento trovato utilizzando il localizzatore

NoSuchElementError: No element found using locator: By.id("userForm")

Il mio codice è:

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

capisco che ricevo questo errore perché elemento non è più sulla pagina (è quello che voglio confermare), ma non dovrei ottenere un falso e non un errore?

+0

È consigliabile utilizzare isElementPresent o isPresent: l'errore che si ottiene è parte della logica di WebDriver –

risposta

28

isDisplayed() sarebbe controllare se un elemento è visibile o meno, ma è necessario verificare se un elemento è presente in DOM o no, utilizzare isElementPresent() o isPresent():

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

Consulta anche:

+2

Sei un "angelo protractor"! Ho imparato molto dalle tue risposte qui! grazie! @alecxe –

+1

@IdanE e ho imparato molto dalle tue domande! Grazie! – alecxe

+0

Se lo faccio in condizioni. non funziona. ex. 'if (browser.isElementPresent (elemento (by.id ('userForm')))' –

2

Questo errore fa parte del comportamento di WebDriver. In questi casi si dovrebbe meglio utilizzare isPresent o isElementPresent

Problemi correlati