zoukankan      html  css  js  c++  java
  • Android App自动化测试(三)

    1.Native App自动化测试及Appuim框架介绍

    android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎。如果想使用uiautomator去做App自动化测试的话,需要去学习java语言,本文分享的主题是基于python的,那么如何使用python来控制App呢?就需要借助本文将要讲到的框架appium。见下图,用python脚本去控制appium,appium再控制uiautomator,然后再由uiautomator去控制app。

     

    使用python语言却控制的却是uiautomator的java库,这个就是appium起到的“桥梁”作用,appium就是在uiautomator的基础上封装来的,至于appium的“桥梁”作用是如何实现的,不是本文的重点,就不多说了。

    1.1,appium是什么

    appium是一个开源、跨平台的自动化测试工具,用于测试Native(原生)和Hybrid(混合)应用,支持IOS、Android和FirefoxOS平台。

    1.2,appium的理念

    1.3,appium的特点

    1.4,appium原理

    下图appium中的“UIAutomator controller”的作用是自动化测试环境的初始化,例如向手机中push一个Bootstrap.jar文件、安装app;“UIAutomator command client”的作用是自动化脚本的执行;

    我们希望通过uiautomator来控制app,那么appium会把集成了uiautomator提供的各种api的封装Bootstrap.jar文件push到手机上。Bootstrap.jar文件push到手机上后会监听一个端口号,并调用“UIAutomator command server”服务,“UIAutomator command client”在把从“WebDriver script”获得的脚本发送给 “UIAutomator command server”,从而实现python脚本对app的控制。

    2.自动化测试环境、元素识别工具、脚本设计原则--love原则

    2.1,环境的准备

    2.2,元素识别工具

    UIAutomatorviewer路径:sdk oolsuiautomatorviewer.bat;打开UIAutomatorviewer后的界面如下:

    2.3,脚本设计原则--Love原则

    3.Native App自动化脚本的实现

     下面通过模拟器自带的计算器来介绍自动化脚本的实现;整个过程中要做的内容:

    3.1.Appium的配置、启动;

    如图1;

    如图2,appium成功启动后的界面;

    3.2脚本的初始化

    这里选择pycharm编辑器,创建脚本的步骤:

    1.新建工程,如下图;

    2.新建package,如下图;

    3.新建脚本文件,如下图;

    4.脚本的实现

    4.1,初始化部分:

    如图3,图3中绿色框中的“http://localhost:4723/wd/hub”是appium监听的端口号,就是脚本发送指令的目标地址,可以从图2中appium启动时打印出来的信息中获得(图2红色框中);

    获取deviceName、appPackage、appActivity,如图4、5;获取appPackage和appActivity,在执行完adb logcat | grep START后,启动测试应用,从图5的控制台新增信息里可以获取到appPackage和appActivity名。

    4.2,脚本部分--LOVE原则

     如图5,用UIAutomator viwer定位元素,比如5的id为“digit5”;

    如图7,脚本实现了执行“8+5=13”并对结果进行验证;

    从图7中,我们可以看到对结果的定位方法变成了find_element_by_class_name,如图8,是因为结果区域没有resource_id,所以就换了另外一种定位方法,但是值得注意的是,使用find_element_by_class_name来定位元素,有的时候定位的结果不是唯一的,是因为一个页面中可能包含有多个相同class_name的元素,结果是每次定位,只能定位到索引“index”为"0"的,也就是当前页面里第一个class_name对应的元素的内容;

     

    如图9,证明脚本中异常处理逻辑生效了;

    4.Appuim自动化测试框架API讲解与案例实践(一)

    如图1,unicodeKeyboard的作用是在设备中设置appium的输入法、resetKeyboard的作用是重置输入法;

    如图2,find_elements_by_id()返回的是一个数组,由于计算器页面中只有一个resource_id为digit8的元素,所以elements[0]就是数字8;

     如图3,find_element_by_accessibility_id()定位的元素属性是content_desc

    如图4,是10/5的脚本实现;其中,find_element_by_accessibility_id(u"除")中"除"前面的"u",表示采用unicode编码,可以更好的显示中文;

    5.Appuim自动化测试框架API讲解与案例实践(二)

    press_keycode():点击手机键盘上某一个keycode值;例如计算器上的数字8,在硬件编码上有一个keycode值与之对应;如图1,按键0对应的keycode值是7;

    如图2,使用press_keycode()实现1和0的输入;使用press_keycode()实现输入的好处是相比于“find到元素再操作”,press_keycode()的响应时间比较快;

    send_keys():实现输入的功能;

     

    如图3,定位计算器的输入框,然后传入10;

     

  • 相关阅读:
    软件工程课程总结
    《构建之法》部分读书笔记
    软件工程课程作业
    本周软件工程课程感想
    软件工程课设迭代开发第八天
    软件工程课设迭代开发第五至七天
    软件工程课设迭代开发第四天
    软件工程课设迭代开发第三天
    软件工程课设迭代开发第二天
    Bresenham中点画圆法与二阶差分算法
  • 原文地址:https://www.cnblogs.com/ailiailan/p/6877006.html
Copyright © 2011-2022 走看看