人偶无法点击动态添加的叠加按钮

问题描述

我对javascript非常陌生,所以这可能是一个基本问题。

我正在使用Puppeteer尝试抓取webpage并在页面上下载视频。我正在使用video downloader extension获取视频URL。我的想法是在浏览器中自动打开页面,然后单击视频下载按钮(由扩展程序生成)以下载视频。但是我遇到了一些问题:

我需要播放视频,以便出现下载按钮。我可以通过使用puppeteer单击播放按钮来做到这一点。但是,在视频开始播放后,我无法在视频上单击由扩展程序生成的新下载按钮。我可以从视觉上看到按钮,但是Puppeteer崩溃并显示错误

No node found for selector: button[class="ext_dl-button rounded-Box"]

我认为这是因为扩展程序添加的下载按钮是动态添加到网页中的,并且伪造者page对象对此一无所知。

任何帮助伪造者单击扩展程序生成的下载按钮的方法,将不胜感激。 :)

以下是我为抓取网站而编写的代码的一部分。

(async () => {
    const customArgs = [
        `--load-extension=${pathToExt}`
    ];
    browser = await puppeteer.launch({
        headless:false,ignoreDefaultArgs: ["--disable-extensions","--enable-automation"],args: customArgs,});
    page = await browser.newPage();
    await page.setViewport({
        width: 1280,height: 720,deviceScaleFactor: 1,});
    await page.goto('https://www.raywenderlich.com/sessions/new');
    console.log("Logging in...\n")
    await page.type('input[name="username"]',username,{delay:100})
    await page.type('input[name="password"]',password,{delay:80})

    await Promise.all([
        page.click('button[type="submit"]'),page.waitForNavigation()
    ])

    await Promise.all([
        page.goto('https://www.raywenderlich.com/8984-mvvm-on-android/lessons/1'),page.waitForNavigation()
    ])

    await sleep(3000)
    await page.click('button[class="o-button o-button-video-start"]')

    await sleep(3000)
    await page.click('button[class="ext_dl-button rounded-Box"]')

    await sleep(10000000)

    await browser.close();
})();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)