puppeteer - 当 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">
解决方案
这里可能会出现两个可能的错误。
- 您的选择器格式错误。要确认/否认这是真的,您必须直接在浏览器中执行代码。单击检查元素-> 控制台并输入以下行。
$('#\\/test\\$Menu > li:nth-child(1) > a')
您应该能够看到那里的元素以确认您的选择器是正确的。
- 选择器不可见。运行以下代码让您的 puppeteer 等待选择器变为可见。
page.waitForSelector('#\\/test\\$Menu > li:nth-child(1) > a',{visible: true})
祝你好运!让我知道事情的后续。
推荐阅读
- javascript - 从 Firebase 存储中获取非百分比编码的 URL
- ios - 如何通过 XCode 10 和 Cordova 构建应用程序?
- bash - 如何检查以特定字符串开头的目录是否存在?
- javascript - 具有多个过滤器的过滤器表
- javascript - 如何在 React JS 中添加图像
- javascript - 访问javascript对象的条件属性
- scala - 如何过滤 Scala Map List 值
- node.js - 如何在 vscode 上使用 npm 命令
- elasticsearch - 如何使用 logstash+jdbc 和数据库触发器对 Elasticsearch 进行增量加载
- javascript - 如何更改模式窗口的内容