javascript - (Puppeteer) 有没有办法通过 x, y 获取元素查询?

标签 javascript puppeteer

我想通过传递 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/

相关文章:

javascript - 如何使用 hapi.js 在同一台服务器上支持多个网站?

javascript - 序列化 JSON 数组并将其解析为数组

google-chrome - 如何以自动方式在 Chromium/Chrome 中添加书签

javascript - 类型 'innerText' 上不存在属性 'Element'

html - 如何遍历超市网站并获取产品名称和价格?

javascript - 所选文本的 HTML

javascript - 使用d3.geomap显示1/0数据

javascript - 在 Cordova ,如何导航到另一个 html 页面?

javascript - 如何使用 puppeteer 在弹出窗口中模仿 div 内的鼠标滚动?

javascript - 从模块返回数据以在 react 页面中呈现