Кукловод: как динамически реагировать на всплывающие окна? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь научить кукловода чистить сайты, и самой сложной задачей для меня было выяснить, как кодировать реакцию на динамические всплывающие окна, которые могут возникнуть на основе взаимодействия с пользователем.

Например, для удаления стеклянной двери, когда вы не вошли в систему, часто появляется окно «Всплывающее окно входа в систему» ​​после прочтения слишком большого количества отзывов, и я хотел бы попробовать

  1. Если скребок работает как обычно, если всплывающее окно не появляется,
  2. и имеют специальный ответ (либо вход в систему, либо выход из всплывающего окна), если всплывающее окно действительно появляется.

page.on (как описано здесь ) кажется, что он мог бы сделать это, но как мне заставить его обрабатывать <div class="Login window popup">, появляющийся в случайный момент?

const puppeteer = require("puppeteer");

// puppeteer usage as normal
puppeteer.launch({ headless: false }).then(async browser => {

  const page = await browser.newPage();

  const navigationPromise = page.waitForNavigation();

  await page.setViewport({ width: 1440, height: 794 });

  var data = [];

  await page.goto('https://www.glassdoor.com/Reviews/Grubhub-Reviews-E419089.htm');

  // Perform some actions...

  // Code dealing with popup
      page.on('popup_element_handle', async dialog => {
      // Log in actions...
      });

  })

Большое спасибо за любые советы заранее.

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