bp1*_*123 1 javascript node.js puppeteer
我正在尝试使用 puppeteer 来:
ul从列表创建数组我尝试使用多种方法来做到这一点,page.evaluate但我的数组似乎总是空的。有人可以告诉我我在这里做错了什么吗?
<ul>
<li><button>Connect</button></li>
<li><button>Wait</button></li>
<li><button>Connect</button></li>
<li><button>Connect</button></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
小路:puppeteer.js
const buttons = await page.evaluate(() =>
Array.from(document.querySelectorAll("ul > li button"))
);
for (let button of buttons) {
if (button.innerText === "Connect") {
button.click();
document
.querySelector(
"div.artdeco-modal"
)
.click();
}
}
Run Code Online (Sandbox Code Playgroud)
page.evaluate无法返回 DOM 节点,因为它只能返回可序列化的数据。这些数据可以被包装JSON.stringify以从浏览器环境传输到 Node.js
相反,您需要使用page.$$来获取 DOM 元素的列表。由于您也只是查找具有特定文本的按钮,因此我建议使用page.$x运行 XPath 查询的按钮,并且还可以根据按钮的文本进行过滤。
代码示例
const buttons = await page.$x("//ul/li//button[contains(text(), 'Connect')]");
for (let button of buttons) {
await button.click();
const modal = await page.$('div.artdeco-modal');
await model.click();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码首先查询页面上所有带有“Connect”文本的按钮并迭代它们。它单击每个按钮,每次单击后都会查询模型对话框并单击它。
| 归档时间: |
|
| 查看次数: |
5478 次 |
| 最近记录: |