如何使用 CasperJS 检索复选框的值

How to retrieve value of a checkbox with CasperJS

我在使用 casperjs 获取网页中复选框的值 true/false 时遇到问题!我确实阅读了有关此主题的其他几个主题,但没有解决我的问题。

看我的网页代码:

这是我到目前为止拥有的 CasperJS 代码,它找到了复选框所需的 ID:

...
    var numTimes = 20,
    count = -1;
    casper.repeat(numTimes, function() {
        var name = this.evaluate(function(count) {
            var sel = '[id*="connectedToNeType[' + count + ']"]';
            var element = document.querySelector(sel).id;
            return element;
        }, ++count);
        var check_id = name.replace(/_TD|_TR/, '');
        var checked = this.evaluate(function(check_id) {
            var element = document.getElementById(check_id).checked;
            return element;
        });
        this.echo(' checkbox: ' + checked);
    });

我正在使用重复,因为我有多个 id,我需要检查复选框的值!

变量 name 将从类似的行中获取几个 id,如下所示:

在示例页面中,当 运行 上面的 CasperJS:

时,我得到以下打印输出
-> connectedToNeType[0]}
 checkbox: null
-> connectedToNeType[1]}
 checkbox: null
-> connectedToNeType[2]}
 checkbox: null
-> connectedToNeType[3]}
 checkbox: null
-> connectedToNeType[4]}
 checkbox: null
-> connectedToNeType[5]}
 checkbox: null

您忘记将 check_id 传递给第二个 evaluate() 调用。此外,您的复选框以您尚未添加的“_CB”结尾。

看来你想要:

var name = this.evaluate(function(count) {
    var sel = '[id*="connectedToNeType[' + count + ']"]';
    var element = document.querySelector(sel).id;
    return element;
}, ++count);
var check_id = name.replace(/_TD|_TR/, '') + '_CB';
var checked = this.evaluate(function(check_id) {
    var element = document.getElementById(check_id).checked;
    return element;
}, check_id);
this.echo(' checkbox: ' + checked);