什么是`document.elementFromPoint`的puppeteer api?

时间:2018-10-01 20:01:19

标签: javascript node.js dom chromium puppeteer

ElementFromPoint在MDN中进行了描述,但是我在Puppeteer中找不到类似的功能。

我知道我可以像page.$eval那样执行代码,但是我想知道是否有直接的page.elementFromPoint API。

MDN文档链接:

https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/elementFromPoint

1 个答案:

答案 0 :(得分:2)

当前,没有为DocumentOrShadowRoot.elementFromPoint()显式构建的Puppeteer函数,但是您可以使用page.evaluate()直接在页面DOM环境中执行此功能:

#include <boost/hana.hpp>

namespace hana = boost::hana;

constexpr auto typed_set = [](auto&& ...x) {
  return hana::make_map(
    hana::make_pair(hana::typeid_(x), std::forward<decltype(x)>(x))...
  );
};

int main() {
  auto a = typed_set(1, 'a', 3.0f);
  auto b = typed_set('c');
  auto c = hana::difference(a, b);

  BOOST_HANA_RUNTIME_ASSERT(c == typed_set(1, 3.0f));
}

如果需要在特定坐标处单击或点击元素,则可以使用mouse.click()touchscreen.tap()

await page.evaluate( () => {
    const example = document.elementFromPoint( 100, 100 );
    example.style.color = '#f00';
});