热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要介绍了使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言:前段时间做了selenium的学习和实践,有点意犹未尽,所以自己就又学了下Appium的使用,因为这一套东西在16年已经停止维护了,不管实现还是设计上都不是很容易,也踩了很多坑,现在在此记录下大概过程。后续有时间再完善手册。

一、准备

安装SDK,配置环境变量

链接: https://pan.baidu.com/s/1g2QaWjdfg6Txa0gZf9kk3A

提取码: 8aaz

windows配置环境SDK变量
我的电脑右键->属性

在这里插入图片描述

点击高级系统设置

在这里插入图片描述

点击环境变量

在这里插入图片描述

点击新建按钮,变量名输入ANDROID_HOME,变量值输入解压后的SDK目录

在这里插入图片描述

path变量加入图中两个路径

在这里插入图片描述

打开CMD命令,输入adb后回车 展示如下内容即可

在这里插入图片描述

在cmd中输入android并回车,会自动打开android SDK管理器

在这里插入图片描述

下载Appium服务,并启动

链接: https://pan.baidu.com/s/1Tf_33ZhbMwBmn0HKL-Z8UQ

提取码: s5qa

双击桌面下载好的Appium.exe程序,启动Appium服务

在这里插入图片描述
在这里插入图片描述

出现上图后说明已启动成功

二、代码实现

安装JDK

官方下载
安装过程比较简单,这里就不做详细的赘述了。
之后设置环境变量JAVA_HOME

在这里插入图片描述

编辑Path,添加bin目录

在这里插入图片描述

验证jdk安装,打开cmd输入java,回车。出现下面提示后即配置成功

在这里插入图片描述

设置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"));

指定appium通讯的地址,将相对应的配置传入到驱动运行testNG.xml文件,执行用例(代码会先检查手机有没有连接,没有连接手机不运行,手机端有没有安装要测试的程序,没有的话先安装,安装完成后启动手机app程序,再执行用例),执行完成后会显示执行结果,也可以设置失败截屏,方便我们排查和分析具体失败原因

在这里插入图片描述

看失败截图,很显然现在失败的原因是因为网络原因,ui没有加载完成,元素未找到

在这里插入图片描述

代码中抛异常的地方也是如此

在这里插入图片描述

SDK下载:

链接: https://pan.baidu.com/s/1g2QaWjdfg6Txa0gZf9kk3A

提取码: 8aaz

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

到此这篇关于使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程的文章就介绍到这了,更多相关JAVA+Maven+TestNG框架实现Appium测试安卓真机内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 如何解决TS1219:实验性装饰器功能可能在未来版本中更改的问题
    本文介绍了两种方法来解决TS1219错误:通过VSCode设置启用实验性装饰器,或在项目根目录下创建配置文件(jsconfig.json或tsconfig.json)。 ... [详细]
  • 本文主要介绍如何使用标签来优化Android应用的UI布局,通过减少不必要的视图层次,提高应用性能。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • Bootstrap 缩略图展示示例
    本文将展示如何使用 Bootstrap 实现缩略图效果,并提供详细的代码示例。 ... [详细]
  • 本文介绍了一种支付平台异步风控系统的架构模型,旨在为开发类似系统的工程师提供参考。 ... [详细]
  • 使用 Git Rebase -i 合并多个提交
    在开发过程中,频繁的小改动往往会生成多个提交记录。为了保持代码仓库的整洁,我们可以使用 git rebase -i 命令将多个提交合并成一个。 ... [详细]
  • Manacher算法详解:寻找最长回文子串
    本文将详细介绍Manacher算法,该算法用于高效地找到字符串中的最长回文子串。通过在字符间插入特殊符号,Manacher算法能够同时处理奇数和偶数长度的回文子串问题。 ... [详细]
  • Nvidia Ansel 工具为 PC 玩家提供了便捷的高精度图像采集和分享功能。本文介绍了如何将 Ansel 插件集成到虚幻引擎 4 (UE4) 游戏中,并详细说明了其主要功能和系统要求。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • Python多线程详解与示例
    本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。 ... [详细]
  • 本文详细介绍了Linux系统中用于管理IPC(Inter-Process Communication)资源的两个重要命令:ipcs和ipcrm。通过这些命令,用户可以查看和删除系统中的消息队列、共享内存和信号量。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • A*算法在AI路径规划中的应用
    路径规划算法用于在地图上找到从起点到终点的最佳路径,特别是在存在障碍物的情况下。A*算法是一种高效且广泛使用的路径规划算法,适用于静态和动态环境。 ... [详细]
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
author-avatar
雪狱冰魂_520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有