casperjs clicklabel

casperjs clicklabel

本文关键字:clicklabel casperjs      更新时间:2023-09-26

CasperJS clicklabel允许我们单击一种标签和内部文本的DOM元素。

如果内部文本被 2 个或更多级别包装怎么办?会起作用吗?例如:

<a href='xxxxxx'><span>my inner text</span></a>

我已经尝试了以下方法,似乎都不起作用。

clicklabel('my inner text','a')
clicklabel('my inner text','a/span')
clicklabel('my inner text','a span')
this.click('a > span');

这将对"a"标签内的第一个 span 元素执行单击事件。

根据 casperjs 文档,clickLabel 的第二个参数是节点名称,在您的情况下这是"span",它不需要选择器。 您可能希望改用单击并使用 XPath 而不是 css 选择器。

var x = require('casper').selectXPath;
this.click(x('//span[text()="my inner text"]'));

如果您非常确定 href 属性是常量,只需使用类似以下内容的单击:click("a[href='xxxxx']");

否则你可以试试clickLabel('my inner text','span')

如果两者都失败,请检查您是否不在使用框架的页面中,如果是这种情况,请检查 http://casperjs.org/api.html#casper.withFrame 如何处理它。

祝你好运。

您可以直接使用 :

clickLabel('my inner text','span');

如果它不起作用,请尝试在单击后等待 5 秒或更长时间,例如:

this.wait(5000, function() {
        this.echo("I've waited for 5 seconds.");
    });

等待 5 秒就可以解决问题,因为我也面临同样的问题。