Javascript 木偶演员。无法获取evaluate()中的节点属性

Javascript 木偶演员。无法获取evaluate()中的节点属性,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,如何找到一个不伦不类的单选按钮元素,并点击它在木偶演员 我看到很多文章说,只需使用evaluate,然后单击它或类似的东西,这在我的场景中是行不通的 以下是我所拥有的: page.on('console', consoleObj => console.log(consoleObj.text())); await page.evaluate(() => { let container = document.getElementById('container'); le

如何找到一个不伦不类的单选按钮元素,并点击它在木偶演员

我看到很多文章说,只需使用evaluate,然后单击它或类似的东西,这在我的场景中是行不通的

以下是我所拥有的:

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);
        }
    }
});
我不知道该怎么办。值始终为空

我需要知道它的值,以便知道是否单击它。我打算传入一个要计算的变量,然后根据该变量单击右侧的变量

如果我简单地将radio.click放在for循环中,它的工作原理是它单击每个元素,并且总是在最后一个被选中的元素上结束。所以我知道点击是有效的。如何确定要单击哪一个并选择它

以下是作为HTML的两个单选按钮元素:

<input name="choice" value="accept" class="checkbox" type="radio">

<input name="choice" value="reject" class="checkbox" type="radio">

为什么不使用getElementsByName

page.on('console', consoleObj => console.log(consoleObj.text()));

await page.evaluate(() => {
    let options = container.getElementsByName('choice');

    if (options.length > 0) {
        for (let radio of options) {
            let value = radio.value;
            console.log(value);
        }
    }
});

你的收音机有class复选框,但是你正在循环的元素有class标签哦,我的上帝。我花了两个小时在谷歌上搜索每一个可能的答案。你完全正确。它循环标签,而不是包含输入。我一直在阅读“让选项的单选”,因为它是其中的单选按钮。终止我。我认为如果能够点击包含标签,事情会变得更糟,但它仍然选中了单选按钮。向我确认这是单选按钮。有时我们太习惯于我们正在寻找的代码,以至于我们看不到这些简单的东西。这确实解决了我的问题,但这不是问题背后的原因。见上文@Ramon Portella的评论。不管怎么说,我都会把这个标记为答案,因为从技术上来说,这现在是可行的。是的,他部分是对的,应该把他的评论作为答案:-我太专注于错误节点的控制台日志,以至于我最终深入研究了JSHandles,花了很多时间弄清楚它们是什么以及为什么被使用。我想这不完全是浪费时间,因为我学到了一些新东西: