2016-06-02 3 views
0

Я получил регулярный (не JS) якорный тег, ссылки на внешний сайт, но с дополнительным поведением для выполнения по щелчку, который изменяет DOMTest нг нажмите на обработчик тега привязки

<body ng-controller="MyController"> 
    <a href="https://www.google.co.uk/" ng-click="inProgress = true"> 
    {{ inProgress ? "Going to Google" : "Go to Google" }} 
    </a> 
</body> 

I хотел бы проверить это поведение в тесте транспортировщика E2E. Однако, похоже, что после нажатия ссылки последующие команды запускаются в контексте внешней страницы. Например, следующий тест пройден:

browser.element(by.css('a')).click(); 
expect(browser.getCurrentUrl()).toBe('https://www.google.co.uk/'); 

, но следующий тест не

browser.element(by.css('a')).click(); 
expect(browser.element(by.css('body')).getText()).toBe('Going to Google'); 

с отказом показывает содержание домашней страницы Google, как текст body.

Как проверить, что происходит после щелчка на теге non-Javascript a?

+3

Добавить целевые _blank если вы хотите, чтобы ваша ссылка откроется в отдельном окне, в противном случае тест правильно потерпеть неудачу, вы HTML исчезают, когда вы нажимаете на ссылку – floribon

+0

@floribon На данный момент, я не хотите, чтобы ссылка открывалась в новом окне, но я хочу проверить, что пользователь видит изменение текста в ссылке после нажатия на нее. –

+0

вы можете использовать JQuery triggerHandler и протестировать этот сценарий. 'browser.element ('a'). triggerHandler ('click')' –

ответ

1

Предположим, вам нужно дождаться изменения текста после нажатия кнопки. Из вашего кода вы ищете текст сразу после нажатия? Вы пробовали Expected Conditions

var EC = protractor.ExpectedConditions; 
browser.wait(EC.textToBePresentInElement($('body'), 'Going to Google'), 5000); 
+0

Ожидаемые условия не помогают. Тестирование * немедленно * после щелчка показывает, что загружена внешняя страница, поэтому ожидание дольше не приведет к возврату часов и предоставит транспортирутору доступ к тому, что находится в этой точке на предыдущей странице. –

+0

Извините, я не понял. Я думал, что вы проверяете содержимое тела на следующей странице. – nilesh

+0

Повторяя вопрос, я чувствую, что у ЕС все еще есть потенциал, хотя и не совсем многообещающий. Вы тестируете текстовый текст _immediately_, но, может быть, вам нужно подождать до доли секунды и дать транспортитору шанс? – nilesh

Смежные вопросы