NodeJS 有没有办法检测Puppeteer中的DOM更改[已关闭]

zc0qhyus  于 2023-02-08  发布在  Node.js
关注(0)|答案(1)|浏览(131)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
6小时前关门了。
Improve this question
我用puppeteer点击一个按钮,弹出一个对话框(这不是一个浏览器弹出窗口,只是一个DOM的变化)。
我想要的是检测这一点,以单击此弹出窗口内的另一个按钮。
单击按钮后,我尝试了waitForXPath。

waitForXPath('//a[@class="wrapper__filled-button download_selection_btn"]')

不起作用。
有没有办法在 puppet 戏中检测到这个?

eimct9ow

eimct9ow1#

我认为你想通过点击关闭按钮来关闭弹出窗口。我已经做过很多次了。🤣你可以尝试捕捉弹出窗口检测并继续运行脚本。就像下面这些行。

;(async () => {
    const puppeteer = require('puppeteer')
    const browser = await puppeteer.launch({
        headless: false,
    })
    const context = await browser.defaultBrowserContext()
    const [ page ] = await context.pages()
    await page.goto('https://www.google.com/', {waitUntil: 'networkidle0'})
    await page.waitForSelector('article#main')
    
    try {
        const popup = await page.waitForSelector('#popup')
        if (popup !== null) {
            await page.click('#popup > .close')
        }
    } catch (error) {
        // console.log(error)
    }

    // Do more stuff

})()

我希望这对您有所帮助,但是如果您真的想观察DOM的变化,请务必使用新的MutationObserver API。

相关问题