超详细Appium测试安卓真机使用JAVA+Maven+TestNG框架实现

前言:前段时间做了selenium的学习和实践,有点意犹未尽,所以自己就又学了下Appium的使用,因为这一套东西在16年已经停止维护了,不管实现还是设计上都不是很容易,也踩了很多坑,现在在此记录下大概过程。后续有时间再完善手册。
本人比较喜欢前沿的IT技术,暂时用JAVA语言,后期可能会写一些python的内容,有兴趣的小伙伴加我球球:758844861,一起交流学习!

一、准备

  1. 安装SDK,配置环境变量
    文末下载资源哦

    windows配置环境SDK变量
    我的电脑右键->属性
    在这里插入图片描述
    点击高级系统设置
    在这里插入图片描述
    点击环境变量
    在这里插入图片描述
    点击新建按钮,变量名输入ANDROID_HOME,变量值输入解压后的SDK目录
    在这里插入图片描述
    path变量加入图中两个路径
    在这里插入图片描述
    打开CMD命令,输入adb后回车 展示如下内容即可
    在这里插入图片描述
    在cmd中输入android并回车,会自动打开android SDK管理器
    在这里插入图片描述













  2. 下载Appium服务,并启动
    https://pan.baidu.com/s/1qGPZewtpzj0RHBbufMoong
    提取码:2dyh

    双击桌面下载好的Appium.exe程序,启动Appium服务
    在这里插入图片描述
    在这里插入图片描述
    出现上图后说明已启动成功


二、代码实现

  1. 安装JDK

    官方下载
    安装过程比较简单,这里就不做详细的赘述了。
    之后设置环境变量JAVA_HOME
    在这里插入图片描述
    编辑Path,添加bin目录
    在这里插入图片描述
    验证jdk安装,打开cmd输入java,回车。出现下面提示后即配置成功
    在这里插入图片描述






  2. 设置Capability

// 1.添加配置,创建DesiredCapabilities对象
        DesiredCapabilities des = new DesiredCapabilities();
        // 指定测试设备的名称
        des.setCapability("deviceName", Utils.getParam("deviceName"));
        // 添加操作系统配置
        des.setCapability("platformName", Utils.getParam("platformName"));
        // 添加操作系统版本设置
        des.setCapability("platformVersion", OpenApp.getVersion());
        // 连接的物理设备的唯一设备标识
        des.setCapability("udid", OpenApp.getDeviceName());
        // 不需要再次安装
        des.setCapability("noReset", Boolean.valueOf(Utils.getParam("noReset")));
        // 设置apk的安装路径
        des.setCapability("app", apkDir.getAbsolutePath());
        //指定想要测试应用的包名
        des.setCapability("appPackage", Utils.getParam("appPackage"));
        // 指定想要测试应用的入口
        des.setCapability("appActivity", Utils.getParam("appActivity"));
        // 支持中文输入
        des.setCapability("unicodeKeyboard", Boolean.valueOf(Utils.getParam("unicodeKeyboard")));
        des.setCapability("resetKeyboard", Boolean.valueOf(Utils.getParam("resetKeyboard")));
        // 没有新命令时的超时时间设置
        des.setCapability("newCommandTimeout", Utils.getParam("newCommandTimeout"));
        // 跳过检查和对应用进行 debug 签名的步骤
        des.setCapability("nosign", Utils.getParam("nosign"));
        //自动点击弹窗如:是否允许读取文件权限
        des.setCapability("autoGrantPermissions",Boolean.valueOf(Utils.getParam("autoGrantPermissions")));
        //安卓版本较新,使用uiautomator2
//        des.setCapability("automationName", Utils.getParam("automationName"));
  1. 指定appium通讯的地址,将相对应的配置传入到驱动
  2. 运行testNG.xml文件,执行用例(代码会先检查手机有没有连接,没有连接手机不运行,手机端有没有安装要测试的程序,没有的话先安装,安装完成后启动手机app程序,再执行用例),执行完成后会显示执行结果,也可以设置失败截屏,方便我们排查和分析具体失败原因在这里插入图片描述
    看失败截图,很显然现在失败的原因是因为网络原因,ui没有加载完成,元素未找到
    在这里插入图片描述
    代码中抛异常的地方也是如此
    在这里插入图片描述
    SDK下载:https://pan.baidu.com/s/1tJx9I986ZSX7bUbMOAOT6g
    提取码:8ihz





后面也做了定期执行的程序,包括自动发送邮件,省心。因为写的比较仓促,格式和内容都比较简陋,小白可以做参考(大佬勿喷!)

内容不是很全,持续更新中。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章