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

Check if label exists (rather than selector) in CasperJS

本文关键字:选择器 标签 CasperJS 是否 存在 检查      更新时间:2023-09-26

根据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');
}

有人有解决方案吗?

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

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

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