如何单击display:none元素没有puppeteer?

时间:2019-04-29 16:00:58

标签: javascript node.js google-chrome chromium puppeteer

我想单击一个display属性为none的元素。 我怎样才能做到这一点?

代码:

page.click(".foo");

2 个答案:

答案 0 :(得分:2)

您可以使用JavaScript click函数。此功能将触发元素的click事件,而不关心元素是否可见。

您需要使用page.evaluate在页面内执行它。

示例:

await page.evaluate(() => {
  document.querySelector('.foo').click();
});

答案 1 :(得分:0)

问题仍然存在,使用以下命令对我不起作用:await page.evaluate(()=> {document.querySelector('。foo')。click();});

花了至少半天的时间,我做了一个小技巧,将CSS的“显示”属性更改为“继承”,单击一个元素,然后将CSS的“显示”恢复为原始状态。

  let inputCheckBox = await document.querySelector("input[type='checkbox']");

  const cssDisplay = inputCheckBox.style.display;
  if (!cssDisplay || 'none' === cssDisplay) {
     inputCheckBox.style.display = 'inherit';
  }

  await inputCheckBox.click();

  if (cssDisplay !== inputCheckBox.style.display) {
     inputCheckBox.style.display = cssDisplay;
  }