2015-09-29 4 views
1

Я пытаюсь написать тест, мои результаты отображаются на нескольких страницах, я могу перейти на следующую страницу с помощью кнопки, если кнопка следующей страницы отключена, как я могу добиться его с помощью транспортира? Мой код не с allocation failed ошибкойЭлемент клика проталкивателя до тех пор, пока он не отключен

while(element(by.css('[ng-click="vm.nextPage()"]')).isEnabled()) 
{ 
element(by.css('[ng-click="vm.nextPage()"]')).click(); 
} 

Я также попытался с рекурсивной функцией, вызываемой на isEnabled().then, но она также не работает.

ответ

3

Вы должны использовать рекурсию здесь:

var nextPage = function() { 
    if (element(by.css('[ng-click="vm.nextPage()"]')).isEnabled()) { 
     element(by.css('[ng-click="vm.nextPage()"]')).click(); 
     nextPage(); // next page 
    } 
    else { 
     return; // the element is not enabled, last page 
    } 
} 

и назвать его просто один раз в вашем коде, если страница является угловой (который я предполагаю, что это такое), это будет правильно.

В то время как здесь не работает, то же самое для «for», так как он не может смотреть вперёд, поэтому он не знает, сколько раз будет вызываться while, следовательно, ошибка allocation failed.

+0

похоже, что я слишком рано признал это, функция отслоения работает хорошо после того, как я добавил '.click(). Then ...', но, похоже, это прыжок в бесконечные рекурсивные вызовы, так что он никогда не заканчивается – whd

+0

, вы можете попробовать и exchange 'if (element (by.css ('[ng-click =" vm.nextPage() "]')). isEnabled()) {' с 'element (by.css ('[ng-click =" vm.nextPage() "] ')). isEnabled(). then (function (value) {if (value) {...' – vrachlin

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