如何基于`innerText`获取ElementHandle?

时间:2017-09-08 19:32:21

标签: puppeteer

我有一个链接列表,并希望根据链接的名称在其中一个链接上CORE。我无法通过选择器实现这一目标。

使用click之类的东西来获取该项目的ElementHandle会更好,然后我可以点击/点击它。

我能想到的另一种方法是在page.$eval内获取x / y坐标,然后手动点击该位置。似乎乏味。

我按照指南在这里发布了这个,但LMK如果我们应该在此打开PR。

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用page.$$(selector)获取所有目标元素,然后使用page.evaluate()获取linkName,然后进行检查并点击?

类似的东西:

const targetLinks = await page.$$('yourLinkSelector');
for(let link of targetLinks){
  const linkName = await page.evaluate(el => el.innerHTML, link); 
  if (linkName === 'myFancyLinkToClick') {
    await link.click();
    // break if only 1 link click is needed.
    break;
  }
}

希望它适合你。