簡體   English   中英

使用if-else語句聲明

[英]assertExists with if-else statement

我使用以下代碼:

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一起使用, if-else第一個不存在,請單擊另一個元素:

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

但這似乎不起作用。 如何正確地做到這一點?

這正是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()調用,並取消對最后單擊的注釋,以獲取“預期”行為。

順便說一句,失敗一些斷言並繼續執行腳本是沒有意義的。 您必須考慮要精確地測試什么,以及腳本的哪一部分應該導航到被測組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM