【问题标题】:With Puppeteer how can I click the parent element of my selector?使用 Puppeteer 如何单击选择器的父元素?
【发布时间】:2019-04-25 21:01:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请更具体。添加一些图片以可视化您当前的情况如何?并请添加您的代码。
  • “但我不能”的意思可能是“但它行不通”,所以请说明你在做什么。
  • 对不起,我解释的不是很好。不能,我的意思是该元素不可见,因此我不相信它可以在技术上被点击。因此我认为我需要定位可见的标签,但我不知道如何定位它。
  • const selector = 'label'; 不起作用还是这里有什么问题?

标签: node.js testing puppeteer


【解决方案1】:

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

暂时不可见或不可见?

您尝试过使用 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()
});

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 2019-09-17
    • 2023-02-25
    • 2020-05-24
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多