根据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');
}
有没有人有解决方案?
答案 0 :(得分:4)
XPath是你的朋友(或者你可以迭代页面上的所有元素)。
var x = require("casper").selectXPath;
casper.labelExists = function(labelText, tag){
tag = tag | "*";
return this.exists(x("//"+tag+"[text()='"+labelText+"']"));
};
这会在casper
对象上创建一个可以重复使用的函数,它的工作方式与clickLabel
完全相同。