首页 > 解决方案 > 当 id 包含 $ 时找不到选择器的节点

问题描述

选择器的 id 包含 $ 和 / 并且它将无法获取元素,任何人都可以帮助解决这个问题

下面是html代码,我正在尝试获取元素

<ul id="/job$Menu" class="ant-menu  ant-menu-sub ant-menu-inline" role="menu"><li class="ant-menu-item" role="menuitem" style="padding-left: 48px;"><a href="/job/create"><span>Create Job</span></a></li><li class="ant-menu-item" role="menuitem" style="padding-left: 48px;"><a href="/job/list"><span>Jobs</span></a></li></ul> 

从 devtools 获得的选择器是

#\/job\$Menu > li:nth-child(1) > a

我使用下面的代码来获取 puppeteer 中的元素

page.click('#\\/test\\$Menu > li:nth-child(1) > a');

购买总是得到以下错误:

(node:63727) UnhandledPromiseRejectionWarning: Error: No node found for selector: #\/job\$Menu > li:nth-child(1) > a

希望得到元素<a href="/job/create">

标签: puppeteer

解决方案


这里可能会出现两个可能的错误。

  1. 您的选择器格式错误。要确认/否认这是真的,您必须直接在浏览器中执行代码。单击检查元素-> 控制台并输入以下行。

$('#\\/test\\$Menu > li:nth-child(1) > a')

您应该能够看到那里的元素以确认您的选择器是正确的。

  1. 选择器不可见。运行以下代码让您的 puppeteer 等待选择器变为可见。

page.waitForSelector('#\\/test\\$Menu > li:nth-child(1) > a',{visible: true})

祝你好运!让我知道事情的后续。


推荐阅读