Appium Android UI自动化简介 + 实战

简介: 介绍基于appium的自动化脚本执行思路、使用的定位方式、常用操作、结果断言校验,以及实践中对于失败case的问题定位分析。适合初学appium的同学们

一、自动化比较适合的场景

1、稳定迭代;

2、回归阶段;回归上一版功能,对新功能不适用。

3、研发驱动的底层代码重构;

  • 不适合case:无网、支付、需要数据准备的case

二、Appium简介

Appium是目前最为强大的自动化测试框架,支持IOS 与Android。

  • IOS: 苹果公司的 UIAutomation。
  • Android 4.2+: Google公司的 UiAutomator。
  • Android 2.3+: Google公司的 Instrumentation. (Instrumentation 的支持是通过绑定另外一个独立的Selendroid项目来实现的)。

C/S 架构

Appium的核心是一个遵守REST设计风格的web 服务器,它接受客户端的连接,接收客户端的命令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果。

支持多语言

三、case编写思路

过程抽象: 定位-------操作-------等待---------校验---------定位

定位方式

1、文案

2、id

3、xpath

4、类名

5、属性

6、组合

PS:元素信息通过UIAutomator Viewer工具查看:

操作

1、点击;2、输入;3、滑动;

等待、判断页面元素出现或者消失:

1、 sleep

2、 View或文案显示

3、 View或文案消失

校验

按需求~文案显示或消失,View显示或消失,Dialog消失或消失,Toast等等

四、操作步骤

1、JDK、Android、eclipse、appium 等环境安装

2、启动appium server端

3、run,举例说明~~

/**
* example用例
*/
@Test
public void test_000_example() {
Gotocate(1);
Sleep(2000);
//文案
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"餐饮\")").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);

//id
driver.findElementById("com.baidu.lbs.waimai:id/left_container").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/actionbar_left").click();
Sleep(1000);

//xpath
driver.findElementByXPath("//android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);
//类名--推荐在View数量小的页面使用

//滑动--下拉
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;

for(int i = 0; i < 10; i++)
{
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, 1000);
}

// WaitForStringShow("餐饮");
// WaitForViewShow("com.baidu.lbs.waimai:id/left_container");
// WaitForViewHide("com.baidu.lbs.waimai:id/left_container");
}

五、失败case问题定位

三种可能:1、bug—>提icafe;2、脚本问题->Fix;3、工具问题->寻求其他方式解决;4、环境准备问题(无网、手机无电、有弹窗、目标app后台未杀死等等)

  • 定位问题方式:

1、查看失败case截图

2、定位代码行,查看出错原因(函数级)

3、结合功能,确定出错点

特例:crash,无结果收集,需手工复现

相关文章
|
2月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
2月前
|
Web App开发 前端开发 JavaScript
Playwright极速UI自动化实战指南
Playwright告别Selenium痛点,以智能等待、强大选择器、网络拦截与多设备模拟四大利器,提升自动化效率与稳定性。本文通过实战代码详解其加速秘籍,助你构建高效、可靠的UI测试方案。
|
3月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
23天前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
272 5
|
1月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
2月前
|
存储 消息中间件 人工智能
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
91 4
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
3月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
2月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
418 11
|
2月前
|
JavaScript 前端开发 开发者
鸿蒙应用开发从入门到实战(六):ArkTS声明式UI和组件化
鸿蒙开发语言ArkTS在继承了Typescrip语法的基础上,主要扩展了声明式UI开发相关的能力。
107 1