我想通过传递 x,y 坐标来获取元素查询选择器。
或者满足坐标的元素很少。
也许我可以执行 mouse.click(x, y) 然后获取被点击的元素,但我不希望页面采取任何操作只获取元素的查询。
有可能吗?
最佳答案
如果你只需要视口(viewport)坐标的最顶层元素,你可以试试DocumentOrShadowRoot.elementFromPoint()
.如果你需要组成一个独特的选择器,你可以尝试从 DocumentOrShadowRoot.elementsFromPoint()
中处理元素数组。 (在下面的示例中添加更多检查——类、ID、属性、子项数量和顺序等):
'use strict';
const puppeteer = require('puppeteer');
(async function main() {
try {
const browser = await puppeteer.launch();
const [page] = await browser.pages();
await page.goto('https://example.org/');
console.log(await page.evaluate(() => {
return document.elementFromPoint(100, 100).tagName;
}));
console.log(await page.evaluate(() => {
return document.elementsFromPoint(100, 100)
.map(({ tagName }) => tagName).reverse().join(' > ');
}));
await browser.close();
} catch (err) {
console.error(err);
}
})();
DIV
HTML > BODY > DIV
关于javascript - (Puppeteer) 有没有办法通过 x, y 获取元素查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787136/