美文网首页
Appium+Maven+Junit实现手机计算器自动化测试的简

Appium+Maven+Junit实现手机计算器自动化测试的简

作者: 吉利_52d4 | 来源:发表于2017-11-29 12:47 被阅读0次

环境准备

基础环境搭建我就不详细描述了,简书上各位大神写的很详细。与其他教程不同的是,使用macbook做测试,另外直接用Appium Destop进行元素获取。

使用到的工具主要包括:

1.Appium Destop1.7(目前最新版本,当然在跑本例子之前,需要将基础环境搭好,能自动安装app到手机并打开),Destop可以直接在模拟器中获取元素的id,xpath,使用起来非常方便

2.Eclipse等java开发环境,我用的是maven+junit的框架

项目工程我上传到GitHub上了,大家可以打包下载,直接加载测试

https://github.com/lillianJi/AppiumCalculatorTest

步骤

1.新建maven的项目,同时配置pom.xml文件

在pom.xml中加下以下依赖

、、、

 <dependency>  
    <groupId>commons-io</groupId>  
    <artifactId>commons-io</artifactId>  
    <version>2.4</version>  
</dependency> 
<dependency>  
    <groupId>com.alibaba</groupId>  
    <artifactId>fastjson</artifactId>  
    <version>1.1.22</version>  
</dependency>  
 <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>3.5.2</version>
   </dependency>
<dependency>  
    <groupId>junit</groupId>  
    <artifactId>junit</artifactId>  
    <version>4.11</version>  
    <scope>test</scope>  
</dependency> 
<dependency> 
    <groupId>io.appium</groupId>  
    <artifactId>java-client</artifactId>  
    <version>5.0.4</version>  
</dependency> 

、、、

2.创建测试的java类(类名请随意)

、、、

private AppiumDriver driver;  
  
@Before  
    public void setup() throws Exception {  
    DesiredCapabilities cap = new DesiredCapabilities();  
    cap.setCapability(CapabilityType.BROWSER_NAME, "");  
    cap.setCapability("platformName", "Android"); //指定测试平台  
    cap.setCapability("deviceName", "FFK021XXX971"); //指定测试机的ID,通过adb命令`adb devices`获取  
    cap.setCapability("platformVersion", "7.0");  //测试机系统如Android的版本号

    //将上面获取到的包名和Activity名设置为值  
    //可以通过adb shell dumpsys activity activities 命令去获取,realActivity后即是包名和activity名(必须在手机上启动你需要测试的APK,再用命令获取当前apk的包名和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);  

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

@Test  
public void plus(){  
    //获取1,需要将Appium Destop 连上手机获取本机上的id
    driver.findElementById("com.android.calculator2:id/digit_1").click();  
    //获取+  
    driver.findElementById("com.android.calculator2:id/op_add").click();  
    //获取9  
    driver.findElementById("com.android.calculator2:id/digit_9").click();  
    //获取=  
    driver.findElementById("com.android.calculator2:id/eq").click();  
}  

@After  
public void tearDown() throws Exception {  

    driver.quit();  

、、、

对于类中的一些值,大家需要根据自己的情况修改,请仔细看代码中的注释

3.启动Appium Destop服务
image.png
image.png
4.在Eclipse里面用Junit运行测试类

若报错,可使用debug模式进一步调度确定是哪一步出错

5.观察结果

如果能够运行成功,手机上的计算器apk会自动启动,并实现1+9=10的操作,成功后自动关闭apk

6.疑难杂症
1. 若执行以后发现apk能成功启动,但执行到抓取页面元素时直接报NullpointerException

说明io.appium(java-client)和selenium-java的版本不匹配,需要将java-client的版本更新之最新

2. 需要检查id是否正确,可通过Appium Destop去获取

Appium Destop中Desired Capabilities配置如下
{"platformName": "Android",
"platformVersion": "7.0",
"deviceName": "FFK021733XXX971",
"automationName": "Appium",
"appPackage": "com.android.calculator2",
"appActivity": ".Calculator"}


image.png

然后StartSession,会连接手机计算器并打开模拟器,这时可以在模拟器中查看元素的id


image.png

以上的deviceName/appPackage/appActivity可以根据下面的命令去获取

3.确保手机一直连接着电脑,同时打开着调度模式。另外不能锁屏要不然会连接不上
4. 其他技巧

a.查看当前app的包名和activity
在terminal输入命令adb shell dumpsys activity activities, realActivity后即是包名和activity名
b.查看手机的设备名
在terminal输入命令adb devices即可看到

相关文章

  • Appium+Maven+Junit实现手机计算器自动化测试的简

    环境准备 基础环境搭建我就不详细描述了,简书上各位大神写的很详细。与其他教程不同的是,使用macbook做测试,另...

  • APP自动化测试的用例设计与实现

    一 手工测试用例与自动化测试用例的对比 二自动化测试用例的实现 =========================...

  • 自动化测试原理

    自动化测试的实现原理,针对不同的类型(静态测试和动态测试)来区别对待。动态测试的自动化实现主要通过特定的程序来模拟...

  • selenium自动化框架前的准备

    自动化测试是以人为驱动工具执行测试的过程。而自动化测试框架是让自动化测试实现的一系列组合封装的库或工具,来帮助我们...

  • 自动化测试一些问题

    1. 什么是自动化测试? 自动化测试,顾名思义,自动完成测试工作。 通过一些自动化测试工具或自己造轮子实现模...

  • APP自动化安装篇:appium环境搭建

    PS:此篇仅供于搭建安卓手机的自动化测试环境 一、APP自动化实现逻辑 二、环境搭建 准备工作:下载所有的安装包下...

  • 自动化测试效率提升方案

    自动化测试效率提升方案 本文注重自动化测试用例并行方案的设计,忽略了具体代码实现的细节。代码实现细节大家利用网络资...

  • Soapui接口功能测试参数化

    按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离。 当测...

  • 自动化测试实现优劣

    目前互联网测试中,几乎所有团队、所有测试人员都在做自动化测试。但要评价自动化测试实现的优劣,就需要拿具体的数据来说...

  • 自动化测试框架de详细搭建

    [ 自动化测试 ](javascript:;)框架结构说明目前实现的自动化测试框架大致可以分为以下四块内容: 页面...

网友评论

      本文标题:Appium+Maven+Junit实现手机计算器自动化测试的简

      本文链接:https://www.haomeiwen.com/subject/hpfubxtx.html