代码之家  ›  专栏  ›  技术社区  ›  ludwig

casperjs在设置id后找不到id

  •  2
  • ludwig  · 技术社区  · 6 年前

    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事件:# 新ID

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mario Nikolaus    6 年前

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

    所以对于您的案例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);