简介
"千呼万唤始出来, 犹抱琵琶半遮面", 经过前边的各项准备工作, 终于才把 appium 这位琵琶女请出来. 那么下边就由宏哥给各位看官, 小伙伴们和童鞋们来引荐这位美女(帅哥). 这一篇主要是对前边的内容做一个小小的总结, 我们不能只顾得埋头拉车, 不记得抬头看路可不行哦!
说明: Appium-- 奴家的大号, 提起奴家的大号在江湖上也是无人不知, 无人不晓. 奴家 ==Appium;
一, 奴家自我介绍
奴家是一款开源的自动化测试工具, 奴家可以支持 iOS 和安卓平台上的原生的, 基于移动浏览器的, 混合的应用(App).
1, 请奴家来进行弹奏的好处(使用 appium 进行自动化测试的好处)
奴家在不同平台中使用了标准的自动化 APIs, 所以在跨平台时, 不需要重新编译或者修改自己的应用.
奴家支持 Selenium webDriver 支持的所有语言, 如 java,Object-C,JavaScript,PHP,Python,Ruby,C#,Clojure, 或者 Perl 语言, 更可以使用 Selenium WebDriver 的 API.Appium 支持任何一种测试框架. Appium 实现了真正的跨平台自动化测试.(本文主要介绍 Python 的用法)
2, 奴家的五脏六腑(Appium 架构)
奴家是一个用 Node.JS 编写的 HTTP server, 它创建, 并管理多个 WebDriver sessions 来和不同平台交互, 如 iOS ,Android 等等.
奴家开始一个测试 (一曲弹奏) 后, 就会在被测设备 -- 琵琶 (手机) 上启动一个 server , 监听来自 Appium server(看官, 观众)的指令. 每种平台像 iOS 和 Android 都有不同的运行, 和交互方式. 所以奴家会用某个桩程序 "侵入" 该平台, 并接受指令, 来完成测试用例的运行(曲谱的弹奏).
琵琶女: 下面奴家把时间交还给宏哥, 让宏哥继续来引荐奴家.
宏哥: 好了各位看官, 小伙伴们和童鞋们不要再盯着美女了, 把头往宏哥这边转一转, 把目光往宏哥这边汇聚一下.
宏哥: 哎哎哎, 说你了, 把头转到宏哥这边, 听宏哥给您慢慢道来, 哎哎哎, 对! 不要看别人说的就是你.
宏哥: 好了, 你们都这样, 宏哥就不废话了, 还是把头转回去. 直接开始正题, 进行移动端自动化测试实战(琵琶弹奏 - 十面埋伏)
二, 奴家实战技艺 (以真机<琵琶> 为例)
各位看官这里是给大家列举的一些琵琶女的指法(命令)
aapt dump badging D:\XXX.apk 获取安装包的所有信息
adb devices(查看手机是否连接到电脑)
adb shell pm list packages: 列出所有的包名, 找到所查看包的包名.
adb shell dumpsys package com.Android.XXX: 查看某个包的具体信息
其它:
adb devices: 查看 Android 设备是否连接到电脑.
adb shell dumpsys activity: 查看当前运行的是哪个 activity, 运行的一些进程等
adb shell dumpsys activity activities
adb shell pm list packages: 列出所有的包名.
adb shell dumpsys package: 列出所有的安装应用的信息
adb shell dumpsys package com.Android.XXX: 查看某个包的具体信息
adb shell dumpsys activity | grep mFocusedActivity: 查看当前 resume 的是哪个 activity
adb logcat | grep ActivityManager: 查看当前正在运行的 Activity
adb logcat | grep Displayed: 查看当前正在运行的 Activity
1, 连接真机或者模拟器 -- 这里是琵琶女手指和琵琶如何接触连接
1)连接手机时注意选择手机的开发者模式, cmd 打开命令行窗口, 输入 adb devices 获取到设备的 deviceName.
2)启动模拟器, 连接模拟器 AVD(Google 自带),cmd 打开命令行窗口, 输入 adb devices 获取到设备的 deviceName
3)启动模拟器, 连接夜神模拟器, 要注意先输入 nox_adb.exe connect 127.0.0.1:62001(相当于插入数据线), 再继续, 输入 adb devices
2, 获取 Activity(获取曲谱中曲调, 就和我们现在音乐中的 "到瑞秘法扫垃圾" 差不多)
1)cmd 打开命令行窗口, 输入 aapt dump badging D:\XXX.apk(xxx 指安装包名, D:\ 是指路径)直接查看需要测试 App 安装包的具体信息.
2)标记的就是包名, 继续往下拖拽, 可以找到 activity 的信息.
这里的红圈就可以看到 activity 的信息. 这两个值, 在 appium 脚本中都需要提前获取到, 所以需要提前介绍这个获取方法. 如果你觉得在 cmd 里面不好看, 你可以把 cmd 信息导出到一个 txt 文件, 例如 aapt dump badging shoujibaidu.apk> 123.txt 回车后, 会在桌面生成一个 123.txt 文件, 你可以打开, 通过查询找到这些信息. 通过上面的方法, 只要我们有 Android SDK 环境, 那么我们就可以获取到任意一个包的包名和 Activity 信息.
3, 启动 Appium
1) 双击桌面上的 appium 图标打开, 点击 Android Settings 进行设置.
2)将上方获取到的真机的 deviceName 填入 , 选择 platformName 和 platformVersion
3)将服务的 session 配置成可重写(非必要的配置)
4)配置好后, 点击右上角的启动按钮进行启动即可.
5)启动成功, 下一步该写代码了.
4, 将上方得到的设备和安装包信息写入脚本中
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-6-19
- @author: 北京 - 宏哥 QQ 交流群: 707699217
- Project: 初始琵琶女 appium
- '''
- # 3. 导入模块
- from appium import webdriver
- import time
- desired_caps = {}
- desired_caps['platformName'] = 'Android' #Android 的 apk 还是 iOS 的 ipa
- desired_caps['platformVersion'] = '8.0' #Android 系统的版本号
- desired_caps['deviceName'] = 'emulator-5554' #手机设备名称, 通过 adb devices 查看
- desired_caps['appPackage'] = 'com.taobao.taobao' #apk 的包名
- desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk 的 launcherActivity
- # desired_caps['unicodeKeyboard'] = True #使用 unicodeKeyboard 的编码方式来发送字符串
- # desired_caps['resetKeyboard'] = True #将键盘给隐藏起来
5, 查找 App 定位元素
1)启动 Android SDK 中的一个神器可以查找 App 的定位元素进行脚本的编写. 在 Android SDK 中的 tools 中有一个 uiautomatorviewer.bat, 如下图所示:
2)点击 uiautomatorviewer.bat 进行启动, 左上角一共四个按钮, 作用分别是打开本地文件(open),Device Screenshot (uiautomator dump)dump 页面, dump 压缩格式的页面, 保存; 启动后点击左上角第三个图标进行真机界面的呈现.
3)选择设备模拟器或者真机
4)第一次连接会比较慢, 耐心等候一下, 连接好后以后就快了. 我这里以百度界面为例.
这是连接夜神模拟器后的界面显示. 这样就可以根据 id,class,text 等定位元素进行定位了.
- 1 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
- 2 driver.find_element_by_id("index-kw").click()
- 3 driver.find_element_by_id("index-kw").clear()
- 4 driver.find_element_by_id("index-kw").send_keys('appium 测试')
- 5
- 6 7 driver.find_element_by_id("index-bn").click()
- 8
- 9 driver.quit()
三, 以淘宝 App 为实例
1, 实例代码
2, 代码运行结果
3,appium 运行结果
4, 模拟器运行结果
5, 参考代码
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-6-19
- @author: 北京 - 宏哥 QQ 交流群: 707699217
- Project: 学习和使用 python 代码 appium+pycharm + 连接夜神模拟器
- '''
- # 3. 导入模块
- from appium import webdriver
- import time
- desired_caps = {}
- desired_caps['platformName'] = 'Android' #Android 的 apk 还是 iOS 的 ipa
- desired_caps['platformVersion'] = '8.0' #Android 系统的版本号
- desired_caps['deviceName'] = '127.0.0.1:62001' #手机设备名称, 通过 adb devices 查看
- desired_caps['appPackage'] = 'com.taobao.taobao' #apk 的包名
- desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk 的 launcherActivity
- #desired_caps['unicodeKeyboard'] = True #使用 unicodeKeyboard 的编码方式来发送字符串
- #desired_caps['resetKeyboard'] = True #将键盘给隐藏起来
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址, 后面跟的是手机信息
- # 休眠五秒等待页面加载完成
- time.sleep(5)
- driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
- time.sleep(4)
- driver.find_element_by_id("com.taobao.taobao:id/searchEdit").clear()
- time.sleep(3)
- driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys("琵琶")
- time.sleep(2)
- driver.find_element_by_id("com.taobao.taobao:id/searchbtn").click()
- # driver.quit()
至此运行脚本即可进行自动化测试.(琵琶女弹奏结束, 响起来雷鸣般的掌声, 琵琶女双手抱拳, 豪气十足退出舞台)
小结
1,adb.exe connect 127.0.0.1:62001 和 nox_adb.exe connect 127.0.0.1:62001 的效果是一样的, 前提就是你已经配置好系统变量和解决了版本冲突.
2, 好了有关 appium 的总结就到这里了, 欲知后事如何, 且听下回分解. 嘿嘿!!!
宏哥不能保证所整理都符合大家的口味, 但我能保证每一篇都是用心去写和用心去整理, 我始终认同 "分享的越多, 你的价值增值越大", 欢迎大家关注我的博客和个人公众号的技术分享. 在分享中进步, 越努力越幸运, 期待我们都有美好的明天!
支持宏哥的朋友们和宏哥的宏粉记得点波推荐哦, 您的肯定就是我进步的动力. 鄙人先在这里给您道谢了, 谢您嘞~~
个人公众号(因为许多文章都被搬到别人的公众号里了, 还是原创, 所以宏哥果断也开一个公众号. 打算与博客园文章同步, 希望大家随时随地学习与进步):
来源: https://www.cnblogs.com/du-hong/p/10997307.html