Сначала вы должны учесть, что вы можете получить много элементов на одной позиции, включая основной элемент HTML.
Во-первых, вам нужно получить все элементы:
Array.prototype.slice.call(document.getElementsByTagName("*"))
Затем мы теперь имеем, что у каждого элемента есть функция с именем getClientRects
, которая будет возвращать массив «ящиков».
Исходя из этого, мы можем отфильтровать все элементы, имеющие одно поле в нужной вам координате:
var x = 150;
var y = 1250;
Array.prototype.slice.call(document.getElementsByTagName("*")).filter(e =>
Array.prototype.slice.call(e.getClientRects()).find(rect =>
rect.top <= x && rect.bottom >= x && rect.left <= y && rect.right >= y))
Вы можете сделать что-то подобное в своем вызове evaluate
в Puppeteer.