Кукловод / хром не переходят на следующий маршрут по клику.Почему он остается на том же маршруте и пытается открыть представление по текущему URL? - PullRequest
0 голосов
/ 19 апреля 2019

Нажатием на элемент кнопки с помощью ng-click (который имеет $state.go в функции ng-click) кукловод / хром не переходят к следующему маршруту. Почему он остается на том же маршруте и пытается открыть представление по текущему URL? Все работает на реальном сайте, когда я нажимаю на себя (без кукловода).

Я получаю ошибки:

StackTrace не определен, и $ digest уже выполняется

Я пытался:

const startBtn = ".button-selector";

await page.waitFor(startBtn);
await page.click(startBtn);
await page.waitForNavigation();
await page.waitForSelector(".new-selector");

1 Ответ

0 голосов
/ 22 апреля 2019

Оператор await использует обещания ES6, которые не интегрированы в платформу AngularJS и ее цикл дайджеста.

Преобразование обещаний в обещания AngularJS с $q.when и исключение оператора await:

const startBtn = ".button-selector";

var p1 = $q.when(page.waitFor(startBtn));
var p2 = p1.then(function() {
   return $q.when(page.click(startBtn));
});
var p3 = p2.then(function() {
   return $q.when(page.waitForNavigation());
});
var p4 = p3.then(function() {
   return $q.when(page.waitForSelector(".new-selector"));
});

return p4;

Метод $ q.when оборачивает объект, который может быть значением или обещанием (которое может быть третье лицо), в обещание $ q .Это полезно, когда вы имеете дело с объектом, который может или не может быть обещанием, или если обещание исходит из источника, которому нельзя доверять.

Метод .then обещания AngularJS - этоинтегрирована с фреймворком AngularJS и его циклом дайджеста.AngularJS изменяет обычный поток JavaScript, предоставляя собственный цикл обработки событий.Это разбивает JavaScript на классический и AngularJS контекст выполнения.Только операции, которые применяются в контексте выполнения AngularJS, выиграют от привязки данных AngularJS, обработки исключений, отслеживания свойств и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...