首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在木偶中访问Chrome Downloads元素?

如何在木偶中访问Chrome Downloads元素?
EN

Stack Overflow用户
提问于 2021-09-02 04:26:34
回答 1查看 210关注 0票数 3

有人知道如何使用Puppeteer访问Chromes下载列表中的项目并与之交互吗?

我尝试过的所有内容都不匹配任何元素,并返回null。

代码语言:javascript
运行
复制
'use strict';

const CHROME_BINARY_PATH = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome';
const puppeteer = require('puppeteer');

(async () => {
    try {

        const browser = await puppeteer.launch({
      executablePath: CHROME_BINARY_PATH,
            defaultViewport: null,
            headless: false,
            devtools: false,
            isMobile: false,
            hasTouch: false,
            args: [
                '--window-size=1920,1080',
                '--disable-web-security',
                '--disable-features=IsolateOrigins,site-per-process'
            ],
            userDataDir: './user_data'
        });
        const page = (await browser.pages())[0]; // load an empty page
        await page.goto('chrome://downloads/',{ waitUntil: 'networkidle2', timeout: 30000 });

        console.log('getting downloads list element');
        await page.waitForSelector('#downloadsList',{ timeout: 5000 });
        let downloadsList = await page.$('#downloadsList');
        console.log(downloadsList);

    } catch (e) {
        console.log(e);
    }
})();
EN

回答 1

Stack Overflow用户

发布于 2021-09-02 10:41:05

此页面使用DocumentFragment生成内容,因此很难正常查询DOM。但您可以在页面上使用evaluateHandle函数执行js脚本,然后通过如下方式查询#downloadsList

代码语言:javascript
运行
复制
await page.waitForSelector("body > downloads-manager", { timeout: 5000 });
const downloadsList = await page.evaluateHandle(`document.querySelector("body > downloads-manager").shadowRoot.querySelector("#downloadsList")`);
    console.log(downloadsList);

如何获取js代码片段?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69024153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档