使用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的更多相关文章

  1. 基于Appium、Python的自动化测试

    基于Appium.Python的自动化测试环境部署和实践   第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile ...

  2. 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!

    基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest    ②unittest demo 中 包含 web.api 自动化测试框架 ...

  3. appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法 一,    打开手机的USB调试模式 二,    连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...

  4. 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 ...

  5. 广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ]

    广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ] http://automationqa.com/forum.php?mod=viewthread&tid=244 ...

  6. 使用appium做安卓手机web自动化测试 真机demo

    一:appium相关环境搭建过程略. 二:连接真机: 1.手机(andriod 4.2.2)连接电脑,打开USB调试模式. 2.运行cmd 输入 adb devices -l 查看UDID,如图: 3 ...

  7. Appium之开发计算器自动化测试脚本Demo

    1.依赖包 <!-- https://mvnrepository.com/artifact/io.appium/java-client --> <dependency> < ...

  8. appium自动化测试(三)

    一. 层级定位和list 先通过find_element_by_XXX找到父级元素webelement,再通过webelement.find_element_by_XXX寻找子元素 二. 滑动屏幕 滑 ...

  9. Appium移动自动化测试(三)之元素定位

    实验简介 做过UI自动化(web自动化, 移动自动化)的同学都会知道, 除去框架的选型和搭建以外, 落到实处的对元素进行定位就成了最重要的技能. 做过UI自动化的同学会知道, 对页面元素的定位方式有8 ...

  10. Appium原理初步--Android自动化测试学习历程

    章节:自动化基础篇——Appium原理初步(第七讲) 本期关键词: Appium.跨语言跨平台.Bootstrap 主要讲解内容及笔记: 一.what is appium 一种封装了uiautomat ...

随机推荐

  1. transaction 数据库事务 roolback 回滚

    事务是恢复和并发控制的基本单位 https://baike.baidu.com/item/数据库事务/9744607 事务有三种模型: 1.隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开 ...

  2. 搞懂head 和 tail 命令

    情景 会点linux命令的人都知道head -n k和tail -n k(k≥0)的作用,但却不知道还支持head -n -k和tail -n +k的用法, 更不知道有着怎样的作用了. 图解 下面,用 ...

  3. Django的模型层(1)- 单表操作(下)

    一.查询表记录 在学习查询表记录之前,先了解一下QuerySet,这是一种类似列表的数据类型,是由ORM创建的.我们学习查询表记录的方法时,一定要明确哪些方法返回了QuerySet类型,哪些方法返回m ...

  4. Appium自动化环境搭建(windows+Android)

    开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...

  5. sql server性能调优

    转自:https://www.cnblogs.com/woodytu/tag/%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%9F%B9%E8%AE%AD/defaul ...

  6. 使用ansible 完成yum安装lamp环境

    使用ansible 完成yum安装lamp环境 [root@node2 ~]# cd /etc/ansible/playbook/[root@node2 playbook]# lslamp[root@ ...

  7. django联合查询

    假设A表的主键aid作为B表的外键,A表有属性name,那么想查询B表中name为abc的元素就可以这样写: B.objects.all().filter(aid__name = 'abc') __真 ...

  8. Java集合(6):TreeSet

    一.TreeSet介绍 与HashSet是基于HashMap实现一样,TreeSet是基于TreeMap实现的.TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进 ...

  9. python selenium firefox使用

    演示的版本信息如下: Python 3.6.0 Selenium  3.5.0 Firefox 55.0.3 geckodriver v1.0.18.0 win64 1.前提准备 1.1 安装pyth ...

  10. 关于myeclipse+tomcat+struct2的热部署问题

    今天满心欢喜的打开电脑来写程序,却不曾想到它竟然给我搞事情,前几天刚学的struct2热部署竟然不好用了.每次改java文件都要重新部署好麻烦,最后花了了好长时间才解决,必须在这里总结一下: (1)s ...