Appium移动自动化测试(三)--自动化测试demo
使用java语言编写并实现自动化测试实例
前面我已经搭建好了appium所需要的环境,本文我以系统自带的计算器app为测试对象,进行学习。
一、将测试机与PC连接
本人使用的是Android模拟器,测试时也可选择真机,操作步骤都是一样的。通过Usb接口将真机与PC端连接起来,(由于我使用的是模拟器,所以只需启动模拟器就行了)。在安装appium搭建环境中我们已经安装了SDK,所以打开CMD命令窗口,用adb devices
命令来查看是否可以检测到手机设备,如果如下图显示出设备,则证明我们可以对手机进行测试操作。
可以看出,我的测试机器设备的device是:emulator-5554
二、打开指定测试App的指定Activity
通过上一步操作,我已经看到我的设备是可以操作的了,那究竟应该如何让appium去自动找到指定的APP和指定的Activity呢?想要打开指定的App,需要知道App的包名,同样想要打开指定Activity也需要知道其名,如何获取?
1、问公司的开发人员,一定可靠。
2、通过命令获取:adb shell dumpsys window w |findstr \/ |findstr name=
(这条命令的作用是,获取当前app和当前Activity的名字,我现在手机已经打开了计算器应用)如图:
三、打开uiautomatorviewer获取元素
接下来需要用uiautomatorviewer
对测试app的元素(button、text Field)进行抓取,比如通过id、class和text等来确定具体的元素。 uiautomatorviewer是在android-sdk的一个工具,具体目录\android-sdk-windows\tools\uiautomatorviewer.bat
。
操作:
1、在D:\Android\android-sdk-windows\tools路径下找到uiautomatorviewer.bat,双击uiautomatorviewer.bat,打开UI Automator viewer 窗口,如图所示:
2、在手机与PC端连接的情况下,点击 “Device screenshot”, 连接手机应用的窗口将显示出来,如图:
3、测试“1+2=3”的用例,在uiautomatorviewer界面,点击“1”,选中该按钮,查看右边的panel来找到“text”或“resource-id” 或“class”的值,如图:
保存其:resource-id
保存其:resource-id
保存其:resource-id
保存其:resource-id
四、创建java项目
我们已经获取到想要的元素,下一步就是用代码编写测试用例了,打开eclipse软件,创建一个java project ,导入依赖,如图:
五、测试源代码
代码实现1+2= 3的自动化测试
package com.occall.ui; import org.testng.annotations.Test; import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver; import org.testng.annotations.BeforeClass; import java.net.MalformedURLException;
import java.net.URL; import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass; public class NewTest {
private AppiumDriver driver;
@Test
public void f() {
//获取1
driver.findElementById("com.android.calculator2:id/digit1").click();
//获取+
driver.findElementById("com.android.calculator2:id/plus").click();
//获取2
driver.findElementById("com.android.calculator2:id/digit2").click();
//获取=
driver.findElementById("com.android.calculator2:id/equal").click();
}
@BeforeClass
public void beforeClass() {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android"); //指定测试平台
cap.setCapability("deviceName", "emulator-5554"); //指定测试机的ID,通过adb命令`adb devices`获取
cap.setCapability("platformVersion", "23"); //将上面获取到的包名和Activity名设置为值
cap.setCapability("appPackage", "com.android.calculator2");
cap.setCapability("appActivity", "com.android.calculator2.Calculator"); //A new session could not be created的解决方法
cap.setCapability("appWaitActivity","com.android.calculator2.Calculator");
//每次启动时覆盖session,否则第二次后运行会报错不能新建session
cap.setCapability("sessionOverride", true); try {
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @AfterClass
public void afterClass() {
driver.quit();
} }
六、启动Appium
手机设备连接到PC端,手机屏幕打开着。接着启动Appium,启动成功如下图:
点击左上角的机器人图标,可以查看设备的相关信息。
七、运行测试类
安装TestNG,点击eclipse中“Help”选项,选择【Install New Software】输入“AppiumTest - http://beust.com/eclipse”,相关设置如下:
点击【Finish】按钮自行安装即可,安装完成后运行测试类。
测试成功:
可以看到,手机端的计算器app,也会自动出现1+2 = 3的自动化输入测试。现在,测试已完成。
Appium移动自动化测试(三)--自动化测试demo的更多相关文章
- 基于Appium、Python的自动化测试
基于Appium.Python的自动化测试环境部署和实践 第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile ...
- 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!
基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest ②unittest demo 中 包含 web.api 自动化测试框架 ...
- appium+Python真机运行测试demo的方法
appium+Python真机运行测试demo的方法 一, 打开手机的USB调试模式 二, 连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
- 广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ]
广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ] http://automationqa.com/forum.php?mod=viewthread&tid=244 ...
- 使用appium做安卓手机web自动化测试 真机demo
一:appium相关环境搭建过程略. 二:连接真机: 1.手机(andriod 4.2.2)连接电脑,打开USB调试模式. 2.运行cmd 输入 adb devices -l 查看UDID,如图: 3 ...
- Appium之开发计算器自动化测试脚本Demo
1.依赖包 <!-- https://mvnrepository.com/artifact/io.appium/java-client --> <dependency> < ...
- appium自动化测试(三)
一. 层级定位和list 先通过find_element_by_XXX找到父级元素webelement,再通过webelement.find_element_by_XXX寻找子元素 二. 滑动屏幕 滑 ...
- Appium移动自动化测试(三)之元素定位
实验简介 做过UI自动化(web自动化, 移动自动化)的同学都会知道, 除去框架的选型和搭建以外, 落到实处的对元素进行定位就成了最重要的技能. 做过UI自动化的同学会知道, 对页面元素的定位方式有8 ...
- Appium原理初步--Android自动化测试学习历程
章节:自动化基础篇——Appium原理初步(第七讲) 本期关键词: Appium.跨语言跨平台.Bootstrap 主要讲解内容及笔记: 一.what is appium 一种封装了uiautomat ...
随机推荐
- Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view ...
- 我的Android进阶之旅------>解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist.
1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...
- 《深度学习》Textbook第十章学习笔记
深度学习 第10章 序列建模:循环和递归网络 1.循环神经网络介绍 相比卷积神经网络:专门用于处理网格化的数据(如图像),可以很容易扩展到更具有很大宽度和高度的图像,以及处理大小可变的图像: 循环神经 ...
- blogCMS中出现的错误整理
1.在写日期归档的时候,出现如下错误: not enough values to unpack (expected 2, got 1) 出现这个错误是因为:字符串需要能够split成2份才能赋值给2个 ...
- 第一个Python程序(Day3)
一 Python 解释器执行Python程序的过程 eg:python3 C:\ test.py 1.启动python解释器 (内存中) 2.将C:\ test.py中的内容从硬盘读入内存 ...
- Bootstrap实现的页面
实现的效果如图,使用bootstrap需要至少三个文件 去bootstrap网上下载,然后使用这三个文件可以了 使用方式,通过标签,class命名来引用已经定制好的html样式 <!DOCTYP ...
- django-ORM复习补充
建表 class Author(models.Model): name = models.CharField(max_length=32) age = models.IntegerField() # ...
- 转:.NET特性与反射
.NET编译器的任务之一是为所有定义和引用的类型生产元数据描述.除了程序集中标准的元数据外,.NET平台允许程序员使用特性(attribute)把更多的元数据嵌入到程序集中.简而言之,特性就是用于类型 ...
- 《TCP/IP详解:卷一》-TCP部分讲解
TCP/IP协议 作者:Danbo 2015-7-2 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以微博联系我! TCP包格式和IP包格式如下: TCP的正常 ...
- linux:查看磁盘硬件信息hdparm,smartctl
smartctl 命令 这个一个用于控制和监控支持smart技术的硬盘的命令.通常配合 -a 选项我们可以查看到比较详尽的硬盘信息(比如序列号.硬盘容量.已运行时间.硬盘健康状况等).用法如下: sm ...