首页 > 解决方案 > 使用 Puppeteer 如何单击选择器的父元素?

问题描述

我必须使用的标记如下所示:

<label>
    <input type="radio" name="myfield" value="Yes" size>
</label>

我想用收音机作为选择器调用 page.click(selector),但我不能。由于 size 属性,我认为它不可见。

我的 javascript 看起来像这样:

const page = await browser.newPage();
const selector = 'input[name="myfield"]';
await page.click(selector);

所以我想定位并单击父标签元素。

如何更改选择器常量的值以定位标签?

标签: node.jstestingpuppeteer

解决方案


对不起,我解释得不是很好。不能,我的意思是该元素不可见,因此我不相信它可以在技术上被点击。因此我认为我需要定位可见的标签,但我不知道如何定位它

暂时不可见还是不可见?

你试过用waitForSelector(selector)吗?

const page = await browser.newPage();
const selector = 'input[name="myfield"]';

await page.waitForSelector(selector); // waiting here before click
await page.click(selector);


或类似的东西:

const page = await browser.newPage();
const selector = 'label';

await page.waitForSelector(selector);

await page.evaluate((_) => {
    document.querySelector('label > input[name="myfield"]').parentElement.click()
});

推荐阅读