美文网首页
在Appium中failcase实现

在Appium中failcase实现

作者: 唐T唐X | 来源:发表于2018-01-25 18:26 被阅读123次

在用Appium编写自动化case的时候会遇到这种场景:测试跑到某一步,验证页面上的元素应该存在。但是实际结果是页面上找不到这个元素,所以此时这个case应该fail了,后面的步骤不应该被执行。但是这个功能是需要我们自己实现的,Appium本身并不知道什么时候应该停止这个case的运行。

下面就来说说怎么实现上述功能,话不多说,直接上代码:

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);

    // 验证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 + ",预期存在");
            isFind = false;
        }
        return isFind;
    }

    // 判断ID应该存在
    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);
    }
}

应该很清楚了吧!其实用的就是junit中TestCase类的fail方法,只是在实现上做了下封装:

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

封装的好处就是无论在哪里调用这个方法,所有的输出都是包含“ERROR!”字段的,这样为我们日后的结果分析提供了方便,同时省去了重复代码编写。

有个细节还是要说下:

    // 验证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 + ",预期存在");
            isFind = false;
        }
        return isFind;
    }

这里用的appium本身的查找元素的方法是findElementsById,所以用不用try块都无所谓,基本不会出现什么错误。但是如果你用的是findElementById,如果找不到就会直接报异常了,所以一定要加try块才行,除非你很喜欢那些exception信息😄

相关文章

  • 在Appium中failcase实现

    在用Appium编写自动化case的时候会遇到这种场景:测试跑到某一步,验证页面上的元素应该存在。但是实际结果是页...

  • appium 模拟实现物理按键点击

    appium自动化测试中,当确认,搜索,返回等按键通过定位点击不好实现的时候,可以借助物理按键来实现。 appiu...

  • Appium 实现连续点击

    很多同学似乎还不太会用Appium实现点击, 其实很简单, Appium的TouchAction 已经替大家都做好...

  • appium 一些操作的方法(java)

    一、appium版本1.7上下左右页面的滑动 1、根据坐标位置滑动 参考文章: Appium 1.7 实现上下、左...

  • 2020-04-28

    Python启动Appium 服务 目前我们已经实现了并发启动设备,但是我们的Appium服务启动还是手动档,比如...

  • appium的安装和使用

    一、软件安装 下载appium-server,安装成功后在环境变量中配置路径,“...”为Appium的绝对路径。...

  • 02-appium的基本使用

    appium-desktop介绍 appium host 指的是appium服务的地址 部署在本地上:127.0....

  • appium实现原理

    一直用的是Appium,最近在研究WebDriverAgent,对二者之间的区别和联系有了更深的认知,Appium...

  • Appium-ADB 分析

    【注】文中提起的 Appium版本為 v1.6.5 在 appium-adb 代码中主要觉得重要的部分是ADB类所...

  • appium中的截图操作如何实现

    pubilc static void Screenshot(AndroidDriver driver,String...

网友评论

      本文标题:在Appium中failcase实现

      本文链接:https://www.haomeiwen.com/subject/htfbaxtx.html