【发布时间】:2019-10-08 09:58:43
【问题描述】:
如何在 puppeteer 中找到一个不起眼的单选按钮元素并单击它?
我看到很多文章说,“只需使用评估()然后单击它”或类似的,这在我的场景中不起作用。
这是我所拥有的:
page.on('console', consoleObj => console.log(consoleObj.text()));
await page.evaluate(() => {
let container = document.getElementById('container');
let options = container.getElementsByClassName('labels');
// OPTIONS GIVES ME AN ARRAY OF JSHandle@node.
if (options.length > 0) {
for (let radio of options) {
let value = radio.value;
console.log(value);
}
}
});
我不知道该怎么办。值始终为空。
我需要知道它的value 才能知道是否点击它。我打算传入一个变量进行评估,然后根据该变量单击正确的变量。
如果我只是将 radio.click() 放在 for 循环中,它的工作原理是它单击每个元素并始终在最后一个被选中的元素上结束。所以我知道click() 有效。如何确定点击哪个并选择它?
以下是 HTML 格式的 2 个单选按钮元素:
<input name="choice" value="accept" class="checkbox" type="radio">
<input name="choice" value="reject" class="checkbox" type="radio">
【问题讨论】:
-
你的收音机有类复选框,但你循环的元素有类标签
-
天哪。我花了 2 个小时查看这个谷歌搜索所有可能的答案。你是绝对正确的。它循环标签,而不是包含输入。我一直在阅读
for (let radio of options),因为它是里面的单选按钮。结尾 。我。 -
我认为通过单击包含标签会使事情变得更糟,但它仍然选中了单选按钮。向我确认这是单选按钮。
-
有时我们已经习惯了我们正在寻找的代码,以至于我们看不到这些简单的东西。
标签: javascript node.js puppeteer