单击时,木偶/铬不会进入下一条路线。为什么它停留在相同的路径上并尝试在当前URL上打开视图?

时间:2019-04-19 13:39:03

标签: angularjs puppeteer

通过ng-click(在$state.go功能中具有ng-click)上单击按钮元素,操纵up /铬不会转到下一条路线。为什么它停留在相同的路径上并尝试在当前URL上打开视图? 当我点击自己的网站(没有操纵up)时,一切都在真实的网站上运行。

我遇到了错误:

  

StackTrace未定义并且$ digest已经在进行中

我尝试过:

const startBtn = ".button-selector";

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

1 个答案:

答案 0 :(得分:0)

await运算符使用未与AngularJS框架及其摘要周期集成的ES6 Promise。

使用$q.when将承诺转换为AngularJS承诺,并避免使用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 promise中。当您处理的对象可能是或不是承诺时,或者承诺来自无法信任的来源时,这很有用。

AngularJS承诺的.then方法与AngularJS框架及其摘要周期集成在一起。 AngularJS通过提供自己的事件处理循环来修改常规JavaScript流。这将JavaScript分为经典和AngularJS执行上下文。只有在AngularJS执行上下文中应用的操作才能受益于AngularJS数据绑定,异常处理,属性监视等。