Ответ 1
Изменить 2:
В кодировке Smackdown ниже, еще более короткий ответ теперь доступен в транспортнике:
expect(element(by.id('recaptcha_image')).isPresent()).toBe(true);
Изменить 1:
Я обнаружил isElementPresent() сегодня, что является просто более читаемым ярлыком для того, что я описал ниже. См.: http://www.protractortest.org/#/api
Использование для вас:
driver.isElementPresent(by.id('recaptcha_image')).then(function(present){
expect(present).toBe(false);
})
Старый ответ (это работает, но выше читается больше)
В общем, вы должны использовать findElements (или $$, который является псевдонимом для findElements css), если вы не уверены, что там будет тег. Затем проверьте длину массива. FindElement (и $) просто вызовет ошибку, если он не сможет найти элемент.
Поэтому вместо
var img =driver.findElement(by.id('recaptcha_image'));
expect(img.getText()).not.toBe(null);
использование:
driver.findElements(by.id('recaptcha_image')).then(function(array){
expect(array.length).not.toBe(0);
})
Кроме того, getText() возвращает обещание, поэтому вы получаете эту ошибку.