Сценарий: веб-форма для регистрации приложений для разработчиков с двумя рабочими процессами.
Страница 1: Заполните подробные сведения о приложении разработчика и нажмите кнопку, чтобы создать идентификатор приложения, который открывается на новой вкладке...
Страница 2: Страница идентификатора приложения. Мне нужно скопировать идентификатор приложения с этой страницы, затем закройте вкладку и вернитесь на страницу 1 и заполните идентификатор приложения (сохраненный на странице 2), затем отправьте форму.
Я понимаю базовое использование - как открыть страницу 1 и нажать кнопку, которая открывается - но как мне получить дескриптор на странице 2, когда он открывается на новой вкладке?
Пример:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({headless: false, executablePath: '/Applications/Google Chrome.app'});
const page = await browser.newPage();
// go to the new bot registration page
await page.goto('https://register.example.com/new', {waitUntil: 'networkidle'});
// fill in the form info
const form = await page.$('new-app-form');
await page.focus('#input-appName');
await page.type('App name here');
await page.focus('#input-appDescription');
await page.type('short description of app here');
await page.click('.get-appId'); //opens new tab with Page 2
// handle Page 2
// get appID from Page 2
// close Page 2
// go back to Page 1
await page.focus('#input-appId');
await page.type(appIdSavedFromPage2);
// submit the form
await form.evaluate(form => form.submit());
browser.close();
})();
Обновление 2017-10-25
- Работа для Browser.pages была завершена и объединено
- Исправления Извлечь новые объекты страницы при создании новых вкладок # 386 и Request: browser.currentPage() или аналогичный способ доступа к страницам # 443.
Ищем хороший пример использования.