В кукловод, как ждать, пока всплывающая страница, чтобы закончить загрузку? - PullRequest
0 голосов
/ 01 мая 2018

В следующем примере, как дождаться окончания загрузки всплывающего окна? После нажатия на значок Google вы получаете всплывающее окно для входа в Gmail, когда я пытаюсь взаимодействовать со второй страницей она не определена (поскольку я не знаю, как ждать, пока она полностью загрузится. Любой совет?

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({headless: false});
    page = await browser.newPage();
    await page.goto("https://www.example.com/signin");
    await page.waitForSelector(".Icon-google");
    await page.click(".Icon-google");
    const pages = await browser.pages();
    console.log(pages[2].url());
})();

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете ждать создания новой цели.

const browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
await page.goto("https://app.testim.io/#/signin");
await page.waitForSelector(".Icon-google");
const nav = new Promise(res => browser.on('targetcreated', res))
await page.click(".Icon-google");
await nav
const pages = await browser.pages();
console.log(pages.map(page => page.url()));

P.S. Сначала я попробовал page.waitForNavigation (), но это не сработало, возможно потому, что это всплывающее окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...