我使用此代码:
var x = require('casper').selectXPath;
...
casper.waitForSelector(x("//a[contains(@id,'cell_13_1')]"), function() {
this.test.assertExists(x("//a[contains(@id,'cell_13_1')]"), 'Clickable');
this.click(x("//a[contains(@id,'cell_13_1')]"));
});
我正在尝试使用if-else
和assertExists
点击另一个元素,如果第一个元素不在那里:
casper.waitForSelector(x("//a[contains(@id,'cell_13_1')]"), function() {
if(this.test.assertExists(x("//a[contains(@id,'cell_13_1')]")==="PASS"){
this.click(x("//a[contains(@id,'cell_11_1')]"));}
else{
this.click(x("//a[contains(@id,'cell_22_1')]"));
}
});
但这似乎不起作用。如何正确地做到这一点?
答案 0 :(得分:1)
这正是casper.exists()
的用途。你也可以明确地传递或失败一些东西:
casper.waitForSelector(x("//a[contains(@id,'cell_13_1')]"), function() {
if(this.exists(x("//a[contains(@id,'cell_13_1')]")){
this.test.pass("Clickable");
this.click(x("//a[contains(@id,'cell_11_1')]"));
} else {
this.test.fail("Clickable");
//this.click(x("//a[contains(@id,'cell_22_1')]"));
}
});
此代码相当于您的第一个代码段。评论fail()
电话并取消注释最后一次点击,以获得“预期”行为。