【问题标题】:Double click in Puppeteer using document.querySelector使用 document.querySelector 在 Puppeteer 中双击
【发布时间】:2019-12-26 03:43:02
【问题描述】:

在使用 Puppeteer 时,单击某些元素时发生的常见错误是

Node is either not visible or not an HTMLElement

这个问题已经解决了here

但是,当我尝试使用 jQuery 的 dbclick() 方法模拟双击时,同样的解决方案对我来说失败了

await page.evaluate(() => {
  document.querySelector('.some-selector').dbclick();
});

错误:TypeError: document.querySelector(...).dbclick is not a function

为什么???

【问题讨论】:

  • 您的文件中似乎没有导入 jquery,您能显示更多代码吗?

标签: google-chrome jquery-selectors puppeteer double-click


【解决方案1】:

没有dbclick 方法,只有具有该名称的事件。

所以在 puppeteer 中你可以使用 jquery:

await page.evaluate(() => {
  $('.some-selector').dbclick();
});

或者 create an event 用纯 JavaScript 写:

const selector = '.some-selector';
await page.evaluate(selector => {

    var targLink    = document.querySelector (selector);
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('dblclick', true, true);
    targLink.dispatchEvent (clickEvent);

}, selector)

【讨论】:

  • 最好使用document.querySelector() 方法。那么你可以传递任何选择器类型(类,id)
  • 我喜欢这个解决方案!我可以为每个类初始化一次 clickEvent 并将其作为 dispatchEvent 参数传递给任何元素
猜你喜欢
  • 2021-01-30
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多