如何使用“ page.goto()”-Puppeteer从一个页面转到另一个页面?

时间:2019-05-19 18:01:58

标签: javascript node.js puppeteer

我正在尝试制作一个可以登录的Instagram Bot,然后转到一些个人资料,我的代码昨天工作了一段时间,然后才停止工作。

我尝试从github克隆我的存储库,但是它也不起作用,有时它又可以工作,但是如果我尝试创建另一个函数,则该代码只是忽略更改页面的代码行。

我也尝试过创建一个新页面,然后在该新页面中使用goto函数,它仍然有效,但是该帐户没有保持登录状态

我正在使用的操纵up的版本:1.16.0

我正在使用的node.js版本:v10.15.3


const puppeteer = require('puppeteer');

const BASE_URL = "https://www.instagram.com/accounts/login/?hl=en&source=auth_switcher";
const instagram = {
  browser: null,
  page: null,
  profile_url: null,
    initialize: async (profile) => {
    instagram.browser = await puppeteer.launch({
      headless: false
    })

    instagram.profile_url = await "https://www.instagram.com/" + profile;
    instagram.page = await instagram.browser.newPage();
    await instagram.page.goto(BASE_URL, {waitUntil: 'networkidle2'});

  },

  login: async(username, password) =>{
    await instagram.page.waitFor(1000);
    await instagram.page.type('input[name="username"]', username);
    await instagram.page.type('input[name="password"', password);
    await instagram.page.click('button[type="submit"]');
    await instagram.page.waitFor(1500);
    await console.log(instagram.profile_url);
    await instagram.page.goto(instagram.profile_url, {timeout: 0, waitUntil: 'domcontentloaded'}); // the code just ignore this line
    await instagram.page.waitFor(1000);
  },
  getPhotosLinks: async() => {
    console.log("Do something here");
  }

}
module.exports = instagram;

它没有给出任何错误消息,只是不起作用

1 个答案:

答案 0 :(得分:1)

替换

await instagram.page.click('button[type="submit"]');
await instagram.page.waitFor(1500);

await Promise.all([
      instagram.page.click('button[type="submit"]');,
      instagram.page.waitForNavigation()
    ]);

看看是否可行