html 选择器使用谓词的谓词

html selector using predicate of predicate

我正在与 puppeteer 合作,我想 select 通过查找具有特定标题名称的 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)
  );
}

有效。现在我想获得 parent 行 (tr)

我该怎么做?

您无法仅使用 CSS 选择器解决它(:has() 目前“支持”不佳)。
我会使用 page.$eval togethet with Node.parentElement (I also recommend optional chaining,但当然 <td> 通常有一个 <tr> 父)

在下面的例子中我取回了它innerText,当然你可以根据需要使用节点元素

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