木偶。无法在评估()中获取节点属性

时间:2019-05-22 00:37:08

标签: javascript node.js puppeteer

如何找到一个非描述性的单选按钮元素,并在操纵p中单击它?

我看过很多文章说,“只需使用评价()然后单击它”或类似内容,在我的情况下就行不通了。

这是我所拥有的:

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中的两个单选按钮元素:

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

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

1 个答案:

答案 0 :(得分:1)

为什么不使用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);
        }
    }
});