【问题标题】:How can I click display:none element with puppeteer?如何使用 puppeteer 单击 display:none 元素?
【发布时间】:2019-09-18 07:00:31
【问题描述】:

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

代码:

page.click(".foo");

【问题讨论】:

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


【解决方案1】:

您可以使用 JavaScript click 函数。该函数会触发元素点击事件,不关心元素是否可见。

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

示例:

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

【讨论】:

    【解决方案2】:

    问题仍然存在,对我没有用:await page.evaluate(() => { document.querySelector('.foo').click(); });

    花了至少半天后,我做了一个小技巧,将 CSS 'display' 属性更改为 'inherit',click() 一个元素,并将 CSS 'display' 恢复为原始。

      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;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2023-02-04
      • 2019-07-01
      • 2020-10-10
      • 1970-01-01
      相关资源
      最近更新 更多