1

CasperJSclicklabel允许我们点击一​​种标签和内部文本的 DOM 元素。

如果内部文本被两层或更多层包裹怎么办?它会起作用吗?例如:

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

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

clicklabel('my inner text','a')
clicklabel('my inner text','a/span')
4

5 回答 5

2
clicklabel('my inner text','a span')
于 2012-08-11T18:37:40.837 回答
2
this.click('a > span');

这将在“a”标签内的第一个 span 元素上执行点击事件。

于 2016-02-22T12:34:24.397 回答
1

根据 casperjs 文档,clickLabel 的第二个参数是节点名称,在您的情况下,这是“跨度”,它不需要选择器。您可能想改用 click 并使用 XPath 而不是 css 选择器。

var x = require('casper').selectXPath;
this.click(x('//span[text()="my inner text"]'));
于 2012-12-04T20:07:26.410 回答
0

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

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

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

祝你好运。

于 2013-03-05T15:07:01.467 回答
0

您可以直接使用:

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

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

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

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

于 2015-12-01T13:18:54.397 回答