在casperjs中检索元素的checked属性

tet*_*ato 2 javascript phantomjs casperjs

目前我正在使用casper.evaluate函数执行类似的操作(使用CoffeeScript)

bool = casper.evaluate ->
        document.querySelector('button selector').checked
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但我想知道是否有一个内置的casper方法,我可以用来检索复选框/无线电元素的checked属性?我尝试过使用getElementAttribute()但它不会检测到'已检查'作为属性.它也没有列在从中检索的JSON对象中getElementInfo().

Art*_* B. 5

不,CasperJS不提供为您提供元素的checked属性的函数,但您可以轻松创建自己的:

casper.isChecked = function(selector){
    var result = this.evaluate(function(selector){
        var el = document.querySelector(selector);
        return el ? el.checked : null;
    }, selector);
    if (result === null) {
        throw new CasperError("Selector not found");
    }
    return result;
};
Run Code Online (Sandbox Code Playgroud)

原因getElementAttribute()并且getElementInfo()不提供这是因为checkedHTML元素的属性而不是属性.属性通常是静态的,即使属性发生更改也不会更改.