casperjs在设置id后无法找到id

时间:2018-02-03 16:47:13

标签: javascript browser phantomjs casperjs

casperjs在设置ID

后无法找到ID
casper.then(function () {
screenLog();
var id =  String("_newid_");
var arrow = this.evaluate(function () {
    var arrows = document.querySelectorAll('span.select2-selection__arrow');
    arrows[1].innerHTML = "aa";
    arrows[1].id = id;
    return arrows[1].innerHTML;
});
screenLog();
this.click("#"+id);
screenLog();});

然后错误代码:  CasperError:无法在不存在的选择器上调度mousedown事件:# newid

1 个答案:

答案 0 :(得分:0)

Caspers评估方法在单独的环境(DOM环境)中运行,因此在浏览器环境中无法访问casper环境中定义的变量。但是,您可以通过添加额外的参数来评估函数,将变量传递给浏览器环境。

因此,对于您的情况,id未定义,但您可以像这样正确传递

var id =  String("_newid_");
var arrow = this.evaluate(function (id) {
    var arrows = document.querySelectorAll('span.select2-selection__arrow');
    arrows[1].innerHTML = "aa";
    arrows[1].id = id;
    return arrows[1].innerHTML;
}, id);