Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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中返回null的querySelector_Javascript_Casperjs_Selectors Api - Fatal编程技术网

Javascript Casperjs中返回null的querySelector

Javascript Casperjs中返回null的querySelector,javascript,casperjs,selectors-api,Javascript,Casperjs,Selectors Api,我正在使用Casperjs抓取一个网站,并试图提取一个包含列表的特定div。我正在抓取的页面的简化版本是: <div id="col1" style="margin-top: 1px; "> <div class="portlet_my_classes" id="my_classes"> <div class="eclass_list"> <ul> <li>

我正在使用Casperjs抓取一个网站,并试图提取一个包含列表的特定div。我正在抓取的页面的简化版本是:

<div id="col1" style="margin-top: 1px; ">
    <div class="portlet_my_classes" id="my_classes">
        <div class="eclass_list">
            <ul>
                <li>First item</li>
            </ul>
        </div>
    </div>
</div>

this.exists(“.eclass\u list”)
返回true,但类始终为null。

document.querySelector(“.eclass\u list”)
函数中的
getClasses
将仅返回具有此类的第一个元素,而不是作为数组而是作为元素。因此,对DOM元素的后续
Array.prototype.map
调用将失败,因为DOM元素没有
length
属性,不能解释为数组。由于页面上下文中存在异常(
SyntaxError:inclular return statement
),因此返回值将为
null

您需要的是
document.queryselectoral(“.eclass\u list”)

如果您添加了和事件,您就会看到问题所在

var casper = require('casper').create()

var classes = []

function getClasses() {
    var classes = document.querySelector(".eclass_list")
    return Array.prototype.map.call(classes, function(e) {
        return e.textContent
    })
}

casper.start('https://redacted', function() {
    this.echo(this.getTitle());
    this.fill('form[action="/do/account/login"]', {login: "redacted", password: "redacted"}, true)
});

casper.then(function() {
    this.echo(this.getHTML())
})

casper.thenOpen('https://redacted', function() {
    this.echo(this.getTitle())
    this.echo(this.getHTML())
    this.echo(this.evaluate(getClasses))
    this.echo(this.exists(".eclass_list"))
    require('utils').dump(this.getElementInfo(".eclass_list"))
    classes = this.evaluate(getClasses)
})

casper.run(function() {
    this.echo(classes).exit()
});