单击 Puppeteer 中的导航按钮 returns 无响应?如何查看正在点击哪个功能?

Clicking navigation button in Puppeteer returns null response? How to see which function is being clicked?

我正在尝试测试单击注册应用程序上的按钮以确保页面正确导航到正确的页面。

当我 console.log 在代码中输出响应时,它 returns 一个看起来像这样的数组

[未定义,空]

然而,当我截取页面截图或检查 url 时,点击和导航有效。它在正确的页面上。

我不明白为什么会返回 undefined/null。另外,我不知道如何测试单击按钮时调用了哪个函数。

我希望能够看到正在调用的实际函数。

我正在使用 AngularJS 1.6、Mocha、Puppeteer 1.11 和 Node 6.4.0

我也是一名初级开发人员,所以可能是我不明白的简单问题,请帮助!

it('should rederict to guest_sms_code state when clicking \'I have a guest code\'', async (function () {
    var response = await (Promise.all([
        page.waitForNavigation({waitUntil: 'domcontentloaded'}),
        page.click('[ng-click="enterSmsCode()"]'),
      ]));
    var url = await (page.url());
    if (url.indexOf('guest_sms_code') === -1) {
        assert.ok(false, 'The URL does not contain \'guest_sms_code\'')
    }
}))

我不相信您可以 分辨出UI 测试调用了哪个方法。 JavaScript 单元测试可以证明使用 Mocha 或 Jest 之类的东西来测试您的代码行为。但是,根据我的经验,自动 UI 测试不会告诉您这一点。毕竟,您正试图向外部用户隐藏应用的内部运作,对吗?

至于为什么 Promise.all([]) 调用返回 [undefined, null],好吧,至少我可以帮助你。

首先,您应该查看 API 文档,了解您在测试中调用的两种方法:

waitForNavigation 文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitfornavigationoptions

click 文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageclickselector-options

waitForNavigation 的情况下,响应实际上 returns 一个 可能会或可能不会 具有 Response 值的 Promise。 Response 是否返回任何数据取决于 UI 中发生的导航。在您的情况下,您会在数组中看到 undefined 值,表明没有从导航返回任何 Response 数据。

对于 click 方法,这也只是 returns 一个已解决或已拒绝的 Promise,没有返回任何类型的数据。因此,很自然地,您根本没有在此处返回任何实际值,因此 null 值被推送到数组。