2017-10-10 10 views
4

ポップアップを処理してポップアップにアクセスして、その上で操作を行う方法。人形のポップアップを処理する方法

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); 
} 

答えて

0

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')); 
}); 

関連性docs can be found here。バージョン0.13.0以降

+0

をうん、私はダイアログと対話することができていますが、どのようにポップアップを処理するのですか –

+0

ブラウザにネイティブではなく、HTMLやCSSを使用して生成されたポップアップについて話していますか? – tomahaug

+0

申し訳ありませんが晴れていない私はポップアップウィンドウについて話していた –

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 
2

をこのコードは活字体ですが、あなたのアイデアを得る:

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(); 
} 
+0

ありがとうございました –

関連する問題