单击Puppeteer中的导航按钮是否返回null?如何查看正在单击的功能?

时间:2018-12-04 18:55:00

标签: angularjs testing mocha puppeteer

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

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

[undefined,null]

但是,当我为页面截图或检查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\'')
    }
}))

1 个答案:

答案 0 :(得分:0)

我不相信您可以判断从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的情况下,响应实际上返回一个Promise,该Promise 可以或不可以具有Response值。是否使用该Response返回任何数据取决于UI中发生的导航。就您而言,您看到的是数组中的undefined值,表明没有从导航中返回任何Response数据。

对于click方法,这也只返回已解决或拒绝的Promise,而不会返回任何类型的数据。因此,自然地,您这里根本没有返回任何实际值,因此null值被推到了数组中。