casperjs 设置id后找不到id

casperjs can't find the id after set id

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

Casper 评估方法在单独的环境(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);