我怎样才能用 puppeteer 点击 display:none 元素?
How can I click display:none element with puppeteer?
我想单击 display
属性 是 none
的元素。
我怎样才能做到这一点?
代码:
page.click(".foo");
您可以使用JavaScriptclick
函数。该函数会触发元素的点击事件,不关心元素是否可见
需要在页面内使用page.evaluate
执行
示例:
await page.evaluate(() => {
document.querySelector('.foo').click();
});
问题仍然存在,对我来说没有用:await page.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;
}
我想单击 display
属性 是 none
的元素。
我怎样才能做到这一点?
代码:
page.click(".foo");
您可以使用JavaScriptclick
函数。该函数会触发元素的点击事件,不关心元素是否可见
需要在页面内使用page.evaluate
执行
示例:
await page.evaluate(() => {
document.querySelector('.foo').click();
});
问题仍然存在,对我来说没有用:await page.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;
}