Проверьте текст в элементе DOM с помощью Protractor

Вот что я пытаюсь сделать, тестируя приложение Angular с Protractor. Я хотел бы получить определенный элемент, который выглядит примерно так:

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>

затем получите его html и проверьте, содержит ли он текст, который я ожидаю от него.

Сначала я попытался получить этот элемент методом cssContainingText, но это не совсем сработало (не знаю почему; может быть, потому что текст внутри абзаца создается динамически). Итак, теперь я получаю этот элемент, используя только локатор by.css. Затем я проверяю, содержит ли он текст, который я тестирую:

// this is Cucumber.js    

this.Then(/^Doing my step"$/, function(callback){
    var el = element(by.css('.someClass'));            
    expect(el).to.contain("some interesting string");
    callback();
 });
});

но это не работает. Проблема в том, что el — это какой-то объект локатора, и я не могу понять, как получить html найденного им элемента, чтобы протестировать этот html. Пробовал .getText(), но безуспешно.

Какие-либо предложения?


person azangru    schedule 13.03.2015    source источник


Ответы (2)


Делает:

expect(el.getText()).to.eventually.contain("some interesting string");

Работа?

Я считаю, что вам нужен .eventually, чтобы дождаться разрешения промиса, и вам нужен .getText(), чтобы получить содержимое div.

См. chai-as-promise во главе образца огурца. .

person P.T.    schedule 13.03.2015
comment
Да, чай-как-обещал в конце концов :-) решил эту проблему. Благодарю вас! - person azangru; 13.03.2015

Попробуйте приведенное ниже решение, которое помогло мне

Решение 1 :

expect(page.getTitleText()).toContain('my app is running!');

Решение 2:

expect<any>(page.getTitleText()).toEqual('my app is running!');
person Sai Sathish    schedule 20.09.2019