CasperJSclicklabel
允许我们点击一种标签和内部文本的 DOM 元素。
如果内部文本被两层或更多层包裹怎么办?它会起作用吗?例如:
<a href='xxxxxx'><span>my inner text</span></a>
我已经尝试了以下方法,似乎都不起作用。
clicklabel('my inner text','a')
clicklabel('my inner text','a/span')
CasperJSclicklabel
允许我们点击一种标签和内部文本的 DOM 元素。
如果内部文本被两层或更多层包裹怎么办?它会起作用吗?例如:
<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 的第二个参数是节点名称,在您的情况下,这是“跨度”,它不需要选择器。您可能想改用 click 并使用 XPath 而不是 css 选择器。
var x = require('casper').selectXPath;
this.click(x('//span[text()="my inner text"]'));
如果您非常确定 href 属性是恒定的,只需使用 click 类似的内容: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 秒就可以了,因为我也面临同样的问题。