vin*_*mar 11 node.js google-chrome-headless puppeteer
如何处理弹出窗口并访问弹出窗口对其进行一些操作.
const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click(Launchpopup);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
从0.13.0版本开始,可以使用以下代码:
... code to open popup...
const pages = await browser.pages(); // get all open pages by the browser
const popup = pages[pages.length - 1]; // the popup should be the last page opened
Run Code Online (Sandbox Code Playgroud)
所以我所做的是我在他们的主页上登录到 facebook,然后导航到我想去的页面,我点击它使用 facebook 按钮登录。然后下面的代码将在弹出窗口发生时单击带有 facebook 按钮的登录。
await page.click('[service_name="facebook"]')
const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));
const popup = await newPagePromise;
await popup.waitForSelector('[name="__CONFIRM__"]')
const confirm = await popup.$('[name="__CONFIRM__"]')
await popup.click('[name="__CONFIRM__"]')
await page.waitFor(2000);
await page.goto('your login page'); $
Run Code Online (Sandbox Code Playgroud)
这段代码是 Typescript,但你明白了:
async function waitForPopupMatching(
browser: Puppeteer.Browser,
regex: RegExp,
openAction: () => Promise<void>,
timeout: number = 30000,
): Promise<Puppeteer.Page> {
const promise = new Bluebird<Puppeteer.Target>(resolve => {
const listener = async (target: Puppeteer.Target) => {
if (target.type() === 'page' && regex.test(target.url())) {
browser.removeListener('targetcreated', listener);
resolve(target);
}
};
browser.addListener('targetcreated', listener);
}).timeout(timeout);
await openAction(); // Typically a mouse click
const tgt = await promise;
return await tgt.page();
}
Run Code Online (Sandbox Code Playgroud)
您应该查看 v0.12.0-alpha 的文档,它描述了如何与对话框交互。
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
await page.goto('https://example.com');
page.on('dialog', async dialog => {
console.log(dialog.message());
await dialog.dismiss();
await browser.close();
});
page.evaluate(() => alert('1'));
});
Run Code Online (Sandbox Code Playgroud)
相关文档可以在这里找到。
| 归档时间: |
|
| 查看次数: |
9199 次 |
| 最近记录: |