使用谓词谓词的 html 选择器

发布于 2025-01-20 02:49:23 字数 660 浏览 0 评论 0原文

我正在与Puppeteer一起工作,我想通过寻找带有特定标题名称的TD来选择一个TR。

我尝试了:

const targetPage = page;
const td = 'td[title="18to22"]';  
const td1 = await waitForSelectors([[td]], targetPage, timeout);

async function waitForSelectors(selectors, frame, timeout) {
  for (const selector of selectors) {
    try {
      return await waitForSelector(selector, frame, timeout);
    } catch (err) {
      console.error(err);
    }
  }
  throw new Error(
    "Could not find element for selectors: " + JSON.stringify(selectors)
  );
}

哪个有效。现在,我想获得父行(tr)

我该怎么做?

enter image description here

I'm working with puppeteer , I want to select a tr by looking for a td with a specific title name.

I tried:

const targetPage = page;
const td = 'td[title="18to22"]';  
const td1 = await waitForSelectors([[td]], targetPage, timeout);

async function waitForSelectors(selectors, frame, timeout) {
  for (const selector of selectors) {
    try {
      return await waitForSelector(selector, frame, timeout);
    } catch (err) {
      console.error(err);
    }
  }
  throw new Error(
    "Could not find element for selectors: " + JSON.stringify(selectors)
  );
}

which works. Now I want to get the parent row (tr)

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坐在坟头思考人生 2025-01-27 02:49:23

你不能纯粹用CSS选择器来解决它(:has( ) 到目前为止,“支持”很差)。
我会使用 page .$evalNode.parentElement (我还推荐 可选链接,但是当然 通常有一个parent)

在下面的示例中,我检索了它的innerText,当然您可以根据需要使用节点元素。

const parent = await page.$eval('td[title="18to22"]', el => el?.parentElement?.innerText)

You cannot solve it purely with CSS selectors (:has() "has" a poor support so far).
I'd use page.$eval togethet with Node.parentElement (I also recommend optional chaining, but of course a <td> usually has a <tr> parent)

In the below example I retreive its innerText, of course you can use the node element as you need it.

const parent = await page.$eval('td[title="18to22"]', el => el?.parentElement?.innerText)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文