如何从Puppeteer中的javascript响应中获取json数据:

时间:2019-12-30 04:47:23

标签: javascript node.js json automation puppeteer

我正在使用Puppeteer和Node编写测试,该测试要求我登录后从响应中获取访问令牌。

当前代码:

//Click Login Button
    const loginButton = await page.$(".click-button.dark.ng-star-inserted");
    response = await loginButton.click();

    const object = page.on('response', async response =>{
       if(response.url().includes("token")){
          // returns the "access_token" i need
          console.log(await response.json());
       }
    });

但是当我这样做时:

const object = page.on('response', async response =>{
       if(response.url().includes("token")){
         try {

          return JSON.parse(await response.json());

         } catch (error) {

         }
       }
    });

    console.log(object);

我只有诺言。经过大量研究,这是我所知道的。如何从promise中返回实际的json并在以后的代码中利用?

1 个答案:

答案 0 :(得分:0)

您需要等待事件监听器返回诺言。因此代码将是

const object = await page.on('response', async response =>{
       if(response.url().includes("token")){
         try {

          return JSON.parse(await response.json());

         } catch (error) {

         }
       }
    });