assertExists使用if-else语句

时间:2015-09-11 21:36:50

标签: javascript testing casperjs

我使用此代码:

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-elseassertExists点击另一个元素,如果第一个元素不在那里:

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')]"));
    }         
});

但这似乎不起作用。如何正确地做到这一点?

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()电话并取消注释最后一次点击,以获得“预期”行为。

顺便说一下,失败一些断言并继续使用脚本是没有意义的。您必须考虑您想要测试的内容以及脚本的哪些部分应该导航到被测组件。