Транспортир нажимает на ссылку, но элемент не виден?

Ху ребята,

У меня проблема, когда я хочу щелкнуть ссылку, которая находится в списке на странице html. Вот мой html:

<h3>{{snapshot.contractKey}}&nbsp;</h3>
    <ul class="nav nav-pills nav-stacked">
                <li><a id="documentLink" href="" ng-click="checkAndRedirect('/document1/')"><span translate="contractDetail.document1"> Document</span>&nbsp;<i class="fa fa-file-text"></i></a></li>
                <li class="active"><a id="detailsLink" href="" ng-click="checkAndRedirect('/document2/')"> <span translate="contractDetail.document2"> Details</span>&nbsp;<i class="fa fa-list-ul"></i></a></li>
                <li><a id="revisionsLink" href="" ng-click="checkAndRedirect('/document3/')"> <span translate="contractDetail.document3"> Revisions </span>&nbsp;<i class="fa fa-exchange"></i></a></li>
                <li><a id="auditTrailLink" href="" ng-click="checkAndRedirect('/document4/')"> <span translate="contractDetail.document4"> Audit Trail</span>&nbsp;<i class="fa fa-tasks"></i></a></li>
                <li><a id="actionHistoryLink" href="" ng-click="checkAndRedirect('/document5/')"> <span translate="contractDetail.document5">Action History </span>&nbsp;<i class="fa fa-clock-o"></i></a></li>
     </ul>

Когда я хочу щелкнуть ссылку по ее идентификатору в тесте транспортира, отображается ошибка Нет такого элемента или Элемент не виден.

Вот моя тестовая строка кода:

element(by.id('documentLink')).click();

Знаете ли вы, почему это плохое решение и что делать?

Когда я делаю это:

element.all(by.tagName('a')).then(function(results){ 
        expect(results.length).toEqual(5);
  });

он возвращает мне, что это правильно, и на странице есть 5 ссылок. Но когда я пытаюсь получить к ним доступ по ID, я не могу этого сделать?


person Dejan Jankovic    schedule 21.05.2014    source источник
comment
Ваша ссылка находится в раскрывающемся списке?   -  person glepretre    schedule 22.05.2014
comment
Нет это не так. Это меню вкладок.   -  person Dejan Jankovic    schedule 22.05.2014
comment
Что дает:expect(element(by.id('documentLink')).isDisplayed()).toBe(true); ?   -  person glepretre    schedule 22.05.2014
comment
Это правда. Транспортир распознает ссылку   -  person Dejan Jankovic    schedule 22.05.2014
comment
Извините, я нашел решение. Это моя ошибка. Поскольку моя конфигурация для теста настроена так, что транспортир открывает половину браузера Chrome, мое меню вкладок находится под кнопкой (из-за отзывчивости), и это приводит к тому, что ссылки на странице невидимы. Спасибо за помощь.   -  person Dejan Jankovic    schedule 22.05.2014


Ответы (1)


Из вашего комментария я предлагаю вам использовать параметр onPrepare в вашей конфигурации Protractor, чтобы максимизировать окно браузера до того, как ваши спецификации начнут работать:

onPrepare: function() {
  browser.driver.manage().window().maximize();
}
person glepretre    schedule 22.05.2014
comment
Да, это именно то, что я искал. Спасибо. - person Dejan Jankovic; 22.05.2014
comment
У меня есть еще один вопрос: если у меня есть интеграция с одним другим сайтом, который устанавливается, когда я нажимаю кнопку, могу ли я приступить к тестированию какого-то сценария рабочего процесса и на этом другом сайте, используя идентификаторы элементов, которые я получаю, например, от firebug? Это проблема, потому что это другой сайт? - person Dejan Jankovic; 22.05.2014
comment
Вау, это может быть еще один хороший вопрос, который можно задать на SO! Что вы подразумеваете под «интеграцией»? Включен ли он на вашу страницу, это другой маршрут, всплывающее окно? Вы должны открыть новый вопрос и дать более подробную информацию о вашем случае;) - person glepretre; 22.05.2014
comment
Да, я так и сделаю, и свяжу вопрос с вами здесь :) - person Dejan Jankovic; 22.05.2014
comment
Это ссылка на другой вопрос :) stackoverflow.com/questions/23805527/ - person Dejan Jankovic; 22.05.2014
comment
Это не работает для меня, нужно прокручивать, чтобы добраться до элемента, с которым я взаимодействую в моем случае :( Он не помещается на экране, даже когда он развернут. - person axk; 07.07.2014
comment
@axk Итак, вам нужно сказать Protractor прокрутить вниз. Возможно, вам помогут эти ответы: stackoverflow.com/a/23573893 или stackoverflow.com/a/24181048;) - person glepretre; 08.07.2014