检查CasperJS中是否存在标签(而不是选择器)

时间:2015-11-24 11:37:49

标签: javascript casperjs

根据CasperJS文档,您可以查看选择器exists

if (this.exists('#my_super_id')) {
    this.echo('found #my_super_id', 'INFO');
}

你可以把任何CSS3选择器放在#my_super_id的位置,它可以很好地工作。但是,如果要单击具有泛型类的特定按钮,这不是非常有用。

<div class="btn button">Save</div>

在这些情况下,clickLabel命令运行良好,但在点击之前我还没有找到检查标签是否存在的方法。

// This doesn't work, for obvious reasons

if (this.labelExists('Save')) {
    this.clickLabel('Save');
}

有没有人有解决方案?

1 个答案:

答案 0 :(得分:4)

XPath是你的朋友(或者你可以迭代页面上的所有元素)。

var x = require("casper").selectXPath;

casper.labelExists = function(labelText, tag){
    tag = tag | "*";
    return this.exists(x("//"+tag+"[text()='"+labelText+"']"));
};

这会在casper对象上创建一个可以重复使用的函数,它的工作方式与clickLabel完全相同。