app自动化4-AppiumDesktop

1. UI自动化分类:

     1> Web自动化:Selenium

     2> App自动化:appium

     3> GUI自动化:windows,Mac

     4> 微信小程序自动化:App + Web 测试技术的外延形态

     5> 更多平台:智能设备,机器人,工业App

2. 自动化测试框架选择:推荐appium,因为
    1> 跨语言:java,python,Node.js等

    2> 跨平台:Andoid,IOS,Windows,Mac

    3> 底层多引擎可切换

    4> 生态丰富,社区强大

 

 3. UI自动遍历测试:以自动化的方式对app进行充分的功能遍历以探索bug,价值如下

     1> 降低自动化维护成本,可替代80%的自动化测试;

     2> 实现新功能的探索;

     3> 实现老功能的回归;

     4> 用途:多设备兼容测试,自动化专项测试

4. 常见遍历工具:

    1> Android原生Monkey

    2> 腾讯 New Monkey

    3> 百度  SmartMonkey

    4> 阿里 Macaca 的 NoSmoke

    5> TestHome社区 vigossjjj smart_monkey

    6> TestHome社区 zhangzhao Maxim

     7> TestHome社区 seveniruby AppCrawler

     8> Google出品的App Crawler

5. 合理的使用UI自动化:

    1> 单元测试:使用app分层测试策略,增加单测试规模,控制UI自动化测试规模;

    2> 移动app自动化测试:核心集成与验收测试用例交给自动化测试;

    3> 自动遍历测试:大部分的基础回归测试交给自动遍历;

    4> 人工测试:测试团队主负责,整个产品团队参与;

 6. 获取app的信息:

    1> 获取当前界面元素:adb shell dumpsys activity top

    2> 获取任务列表:adb shell dumpsys activity activities

    3> 启动应用:adb shell am start -W -n com.xueqiu.android/.view.WelcomeActivityAlias -S

 7. android常用命令:

    1> adb devices:查看设备

    2> adb kill-server:关闭adb的后台进程

    3> adb tcpip:让android脱离USB线的TCP连接方式

    4> adb connect:连接开启了tcp连接方式的手机

    5> adb logcat:android 日志查看

    6> adb bugreport:收集日志数据,用于后续的分析,比如耗电量

    7> adb shell 本身就是一个linux的shell,可以调用android内置命令

         a> adb shell dumpsys:

         b> adb shell pm

         c> adb shell am

         d> adb shell ps

         e> adb shell monkey

8. appium生态工具:

     1> adb:android控制工具,用于获取andriod的各种数据和控制

      2> Appium Desktop: 内嵌了appium server和Inspector的综合工具

      3> Appium Server:appium的核心工具,命令行执行工具

      4> Appium Clients:各种语言的客户端封装库(java,python,ruby,robotframework-appium),用于连接appium server

     5> AppCrawler:自动遍历工具

9. Appium Desktop介绍:

    I:作用

     1> 用于查看app的UI结构

     2> 元素查找测试

     3> 录制用例

     4> Attach已有的session

     5> 云测试

   II:使用方式:

    1> 打开AppiumDesktop,点击Star Server1.9.0 (安装的是1.9.0的AppiumDesktop)

    2> 启动app前,需要设置的一般参数(capabilities的设置):

          a> platformName:android  应用平台,android,ios等

          b> deviceName:qiucaixia  对于ios是真实的设备名称,对于android不为空即可

          c> appPackage:com.xueqiu.android  需要测试的app包名

          d> appActivity:.view.WelcomeActivityAlias   需要测试的app启动入口

         以下字段可以不设置,特殊需要时可以灵活配置:

          e>  autoGrantPermissions:true  给app赋予所需要的手机相关权限,启动app后不会出现权限弹框

          g> noReset fullReset 是否在测试前后重置相关环境

          h> automationName:默认使用uiautomator,可以根据平台不同,支持不同的引擎

          i> unicodeKeyboard  resetKeyBoard:是否需要输入非英文之外的语言并在测试完成后重置输入法

        更多的字段使用说明: http://appium.io/docs/en/writing-running-appium/caps/

 

 

    详情各字段说明另一个链接: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

 PS:capabilities各项参数说明文档:  https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md 

    3> 参数设置完成后,点击Star Session就会启动app

  III:录制脚本

 

     1> 启动app后,点击 Star Recording按键开始录制

     2> 录制可以选择 点击(Tap),输入内容(Send Keys),清空(Clear)进行简单操作的录制

 

    3> 录制完成后,点击 Show/Hide Boilerplate Code得到完整可用的脚本:

 

    4> 复制出来的脚本如下,保存为test_demo.py

 1 # This sample code uses the Appium python client
 2 # pip install Appium-Python-Client
 3 # Then you can paste this into a file and simply run with Python
 4 
 5 from appium import webdriver
 6 #参数设置
 7 caps = {}
 8 caps["platformName"] = "android"
 9 caps["deviceName"] = "qiucaixia"
10 caps["appPackage"] = "com.xueqiu.android"
11 caps["appActivity"] = ".view.WelcomeActivityAlias"
12 caps["autoGrantPermissions"] = "true"
13 
14 driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
15 
16 el1 = driver.find_element_by_id("com.xueqiu.android:id/home_search")
17 el1.click()  #点击搜索栏
18 el2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")
19 el2.send_keys("pdd")  #输入搜索内容
20 
21 driver.quit()
录制得到的脚本

        PS:脚本复制出来后,from appium import  webdriver  报错,需要通过 pip install appium-python-client 来安装这个appium的python客户端

 

 

   5> python test_demo.py执行时,会报错 找不到定位的元素,原因是脚本执行太慢,页面还没有加载完成就执行,导致找不到元素,需要加上等待

  6> 增加隐式等待,增强脚本的稳定性

        PS: appium的API使用说明文档连接: http://appium.io/docs/en/about-appium/intro/

 

 

 

 

 

          PS:参数的单位是S,文档里5000有误。

     7> 完整的代码

 1 # This sample code uses the Appium python client
 2 # pip install Appium-Python-Client
 3 # Then you can paste this into a file and simply run with Python
 4 
 5 from appium import webdriver
 6 #参数设置
 7 caps = {}
 8 caps["platformName"] = "android"
 9 caps["deviceName"] = "qiucaixia"
10 caps["appPackage"] = "com.xueqiu.android"
11 caps["appActivity"] = ".view.WelcomeActivityAlias"
12 caps["autoGrantPermissions"] = "true"
13 
14 driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
15 driver.implicitly_wait(10)  #隐式等待
16 
17 el1 = driver.find_element_by_id("com.xueqiu.android:id/home_search")
18 el1.click()  #点击搜索栏
19 el2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")
20 el2.send_keys("pdd")  #输入搜索内容
21 
22 driver.quit()
加入隐式等待

 

posted @ 2020-03-29 23:41  宁静~朝夕  阅读(304)  评论(0)    收藏  举报