如何解决如何从阴影根元素获取文本?
我有一个正在使用Puppeteer自动化的网页。我想从阴影根元素中获取文本。我的困惑是,阴影根元素可见性是通过在浏览器设置中启用属性来启用的。但是,当脚本运行时,默认情况下将禁用影子根启动新的浏览器实例。那么我该如何访问元素。有什么方法可以通过编程启用影子根。我正在附上DOM元素的屏幕截图。
解决方法
为此,您可以将query-selector-shadow-dom npm软件包用于puppeteer。
const puppeteer = require('puppeteer');
const { QueryHandler } = require('query-selector-shadow-dom/plugins/puppeteer');
(async () => {
try {
await puppeteer.__experimental_registerCustomQueryHandler('shadow',QueryHandler);
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.goto('http://some-site.com/');
await page.waitForSelector('shadow/div'); // if it'd have a class you could replace "div" with the ".class-name"
const shadowDiv = await page.$('shadow/div');
const text = await page.evaluate(el => el.innerText,shadowDiv);
await browser.close();
} catch (e) {
console.error(e);
}
})()
您提到您需要在chrome设置中应用阴影DOM,建议您使用所需的设置创建chrome配置文件(Custom Profile 1
),然后将此配置文件与puppeteer配合使用:
例如:
const browser = await puppeteer.launch({
headless: false,args: [
'--user-data-dir=C:\\Users\\user.name\\AppData\\Local\\Chromium\\User Data','--profile-directory=Custom Profile 1'
]
})
上面的示例适用于Windows,请查看更多平台和更多信息here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。