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月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
185 64
|
3月前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
112 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
28 1
|
1月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
65 4
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
68 2
|
1月前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
47 2
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
28 3
|
2月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。