Chrome 我怎么能用puppeteer点击display:none元素?

pcww981p  于 2023-08-01  发布在  Go
关注(0)|答案(3)|浏览(110)

我想单击display属性为none的元素。我该怎么办?

验证码:

page.click(".foo");

字符串

3htmauhk

3htmauhk1#

您可以使用JavaScript click函数。该函数将触发元素的单击事件,并且不关心元素是否可见。
您需要使用page.evaluate在页面内执行它。

示例:

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

字符串

bpsygsoo

bpsygsoo2#

问题仍然是实际的,没有为我工作使用:等待页面.evaluate(()=> { document.querySelector('. foo').click();});
在花了至少半天的时间之后,我做了一个小技巧,将CSS的'display'属性更改为'inherit',单击()一个元素,并将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;
  }

字符串

0yycz8jy

0yycz8jy3#

托马斯的答案的一个变体,使用$eval来实现更紧凑的代码。

await page.$eval('.foo', el => el.click())

字符串

相关问题