在Appium中failcase實(shí)現(xiàn)

在用Appium編寫自動(dòng)化case的時(shí)候會(huì)遇到這種場(chǎng)景:測(cè)試跑到某一步,驗(yàn)證頁面上的元素應(yīng)該存在。但是實(shí)際結(jié)果是頁面上找不到這個(gè)元素,所以此時(shí)這個(gè)case應(yīng)該fail了,后面的步驟不應(yīng)該被執(zhí)行。但是這個(gè)功能是需要我們自己實(shí)現(xiàn)的,Appium本身并不知道什么時(shí)候應(yīng)該停止這個(gè)case的運(yùn)行。

下面就來說說怎么實(shí)現(xiàn)上述功能,話不多說,直接上代碼:

package modules;

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.openqa.selenium.WebElement;

import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import junit.framework.TestCase;
import modules.AndroidModules;
import testcase_andriod.push.OpenAppTestCase;

public class AndroidModules {

    public static Logger log = Logger.getLogger(OpenAppTestCase.class);

    // 驗(yàn)證Id存在
    private boolean isIdExist(AndroidDriver<WebElement> driver, String id) {
        boolean isFind = false;
        try {
            List<WebElement> cells = driver.findElementsById(id);
            if (!cells.isEmpty()) {
                isFind = true;
            }
        } catch (Exception e) {
            log.info("頁面找不到id值 - " + id + ",預(yù)期存在");
            isFind = false;
        }
        return isFind;
    }

    // 判斷ID應(yīng)該存在
    public void verifyIdExist(AndroidDriver<WebElement> driver, String id) {
        boolean isFind = isIdExist(driver, id);
        if (!isFind) {
            failCase("頁面找不到id - " + id);
        }
    }
    
    // Fail case
    public void failCase(String msg) {
        log.info("ERROR! " + msg);
        TestCase.fail("ERROR! " + msg);
    }
}

應(yīng)該很清楚了吧!其實(shí)用的就是junit中TestCase類的fail方法,只是在實(shí)現(xiàn)上做了下封裝:

    // Fail case
    public void failCase(String msg) {
        log.info("ERROR! " + msg);
        TestCase.fail("ERROR! " + msg);
    }

封裝的好處就是無論在哪里調(diào)用這個(gè)方法,所有的輸出都是包含“ERROR!”字段的,這樣為我們?nèi)蘸蟮慕Y(jié)果分析提供了方便,同時(shí)省去了重復(fù)代碼編寫。

有個(gè)細(xì)節(jié)還是要說下:

    // 驗(yàn)證Id存在
    private boolean isIdExist(AndroidDriver<WebElement> driver, String id) {
        boolean isFind = false;
        try {
            List<WebElement> cells = driver.findElementsById(id);
            if (!cells.isEmpty()) {
                isFind = true;
            }
        } catch (Exception e) {
            log.info("頁面找不到id值 - " + id + ",預(yù)期存在");
            isFind = false;
        }
        return isFind;
    }

這里用的appium本身的查找元素的方法是findElementsById,所以用不用try塊都無所謂,基本不會(huì)出現(xiàn)什么錯(cuò)誤。但是如果你用的是findElementById,如果找不到就會(huì)直接報(bào)異常了,所以一定要加try塊才行,除非你很喜歡那些exception信息??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容