有人知道如何使用Puppeteer访问Chromes下载列表中的项目并与之交互吗?
我尝试过的所有内容都不匹配任何元素,并返回null。
'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);
}
})();
发布于 2021-09-02 10:41:05
此页面使用DocumentFragment生成内容,因此很难正常查询DOM。但您可以在页面上使用evaluateHandle函数执行js脚本,然后通过如下方式查询#downloadsList
:
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代码片段?
https://stackoverflow.com/questions/69024153
复制相似问题