Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检索casperjs中元素的已检查属性_Javascript_Phantomjs_Casperjs - Fatal编程技术网

Javascript 检索casperjs中元素的已检查属性

Javascript 检索casperjs中元素的已检查属性,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,目前,我正在使用casper.evaluate函数来执行类似的操作 (使用咖啡脚本) 这似乎很好,但我想知道是否有一个内置的casper方法可以用来检索checkbox/radio元素的checked属性?我尝试过使用getElementAttribute(),但它不会将“checked”检测为属性。另外,从getElementInfo()检索的JSON对象中也没有列出它。不,CasperJS没有提供一个函数来为您提供元素的checked属性,但您可以轻松创建自己的: casper.isChec

目前,我正在使用casper.evaluate函数来执行类似的操作 (使用咖啡脚本)


这似乎很好,但我想知道是否有一个内置的casper方法可以用来检索checkbox/radio元素的checked属性?我尝试过使用
getElementAttribute()
,但它不会将“checked”检测为属性。另外,从
getElementInfo()
检索的JSON对象中也没有列出它。不,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;
};

之所以
getElementAttribute()
getElementInfo()
不提供此选项,是因为
checked
是HTML元素的属性,而不是属性。属性通常是静态的,即使属性更改也不会更改。

谢谢!快速Javascript提问。当您已经在创建一个接受选择器参数的函数时,为什么必须将选择器作为this.evaluate中的第二个参数传入?这解决了我的其他助手函数返回null/empty时遇到的问题
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;
};