检查 CasperJS 中标签是否存在(而不是选择器)
Check if label exists (rather than selector) in CasperJS
根据 CasperJS 文档,您可以检查选择器是否 exists
.
if (this.exists('#my_super_id')) {
this.echo('found #my_super_id', 'INFO');
}
您可以用任何 CSS3 选择器代替 #my_super_id
,效果非常好。但是,如果您想单击具有通用 class 的特定按钮,这不是很有用。
<div class="btn button">Save</div>
命令 clickLabel
在这些情况下效果很好,但我还没有找到在单击标签之前检查标签是否存在的方法。
// This doesn't work, for obvious reasons
if (this.labelExists('Save')) {
this.clickLabel('Save');
}
有人有解决办法吗?
XPath 是你的朋友(或者你可以遍历页面上的所有元素)。
var x = require("casper").selectXPath;
casper.labelExists = function(labelText, tag){
tag = tag | "*";
return this.exists(x("//"+tag+"[text()='"+labelText+"']"));
};
这会在 casper
对象上创建一个您可以重复使用的函数,它的工作方式与 clickLabel
.
完全相同
根据 CasperJS 文档,您可以检查选择器是否 exists
.
if (this.exists('#my_super_id')) {
this.echo('found #my_super_id', 'INFO');
}
您可以用任何 CSS3 选择器代替 #my_super_id
,效果非常好。但是,如果您想单击具有通用 class 的特定按钮,这不是很有用。
<div class="btn button">Save</div>
命令 clickLabel
在这些情况下效果很好,但我还没有找到在单击标签之前检查标签是否存在的方法。
// This doesn't work, for obvious reasons
if (this.labelExists('Save')) {
this.clickLabel('Save');
}
有人有解决办法吗?
XPath 是你的朋友(或者你可以遍历页面上的所有元素)。
var x = require("casper").selectXPath;
casper.labelExists = function(labelText, tag){
tag = tag | "*";
return this.exists(x("//"+tag+"[text()='"+labelText+"']"));
};
这会在 casper
对象上创建一个您可以重复使用的函数,它的工作方式与 clickLabel
.