目录
- android自动化前提依赖
- Appium Desktop功能介绍
- 利用Appium Desktop 生成用例模板
- 获取app的信息
- 配置待测应用的信息( desire capability)
- 导出python语言的用例
- 添加隐式等待增强用例稳定性
android自动化前提依赖
- adb(Android Debug Bridge)工具,在sdk中提供,需要配置好sdk环境变量
- 模拟器or真机
- 模拟器:网易mumu 、genimotion或者sdk自带模拟器。
- 真机需要root权限
- Appium Desktop: 入门学习工具
Appium Desktop功能介绍
- UI分析
- 录制用例
- 元素查找测试
- Attach已有的session
- 云测试
Appium Desktop工具操作
-
默认监听本地4723端口
image.png - 启动服务后的界面
-
Start Inspector Session:启动server界面端
- Appium Desired Capabilities,参考地址:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
{ "platformName": "iOS", "platformVersion": "11.0", "deviceName": "iPhone 7", "automationName": "XCUITest", "app": "/path/to/my.app }- appActivity:应用的一个活动页代表一个appActivity
-
appPackage:应用的包名
image.png
image.png
-
配置desired capabilities
- platformName:Android
- deviceName:
- 连接设备:terminal中输入
adb connect 设备地址:端口号 - 获取deviceName,terminal中输入
adb devices,会展示已连接的设备列表
- 连接设备:terminal中输入
C:\Users\insan>adb connect 127.0.0.1:7555
connected to 127.0.0.1:7555
C:\Users\insan>adb devices
List of devices attached
127.0.0.1:7555 device
- appPackage:
- 获取appPackage:
- Linux或Mac上:
adb logcat | grep -i displayed - Windows上:
adb logcat | findstr -i displayed - 输入命令后实时打印日志,比如打开雪球股票,就会打印如下信息
- Linux或Mac上:
- 获取appPackage:
C:\Users\insan>adb logcat | findstr -i displayed
04-16 20:45:55.327 681 718 I ActivityManager: Displayed com.mumu.launcher/.Launcher: +1s279ms
04-16 20:57:24.446 681 718 I ActivityManager: Displayed com.xueqiu.android/.view.WelcomeActivityAlias: +3s679ms
04-16 20:57:28.820 681 718 I ActivityManager: Displayed com.xueqiu.android/.main.view.MainActivity: +3s471ms
com.xueqiu.android/.view.WelcomeActivityAlias,/前面的为appPackage,/后面的appActivity,在Appium Desktop中的操作均会同步到设备端。

image.png

image.png

image.png

image.png

image.png
用例录制
-
点击录制按钮
image.png -
进行录制
image.png
image.png
image.png
- 复制代码带pycharm
from appium import webdriver
desire_caps = {
"platformName": "Android",
"deviceName": "127.0.0.1:7555",
"appPackage": "com.xueqiu.android",
"appActivity": ".view.WelcomeActivityAlias",
"noRest": True # 不对应用进行重置,保留app之前的设置
}
"""
appium默认监听本地4723端口
"""
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_caps)
driver.implicitly_wait(10)
el1 = driver.find_element_by_id("com.xueqiu.android:id/home_search")
el1.click()
el2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")
el2.send_keys("alibaba")
el3 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/"
"android.widget.LinearLayout/android.widget.FrameLayout/"
"android.view.ViewGroup/android.widget.FrameLayout/android"
".widget.LinearLayout/android.widget.RelativeLayout/android."
"widget.FrameLayout/android.widget.LinearLayout/androidx."
"recyclerview.widget.RecyclerView/android.widget.Relative"
"Layout[1]/android.widget.LinearLayout/android.widget.TextView[1]")
el3.click()
获取app的信息
- app信息
- 获取当前界面元素:
adb shell dumpsys activity top(推荐)(重点) - 获取任务列表:
adb shell dumpsys activity activities
- 获取当前界面元素:
- app入口
-
adb logcat l grep -i displayed(推荐)(重点);Windows中将grep改为findstr -
aapt dump badging mobike.apk l grep launchable-activity;Windows中将grep改为findstr - apkanalyzer最新版本的sdk中才有
-
- 启动应用
-
adb shell am start -W -n com.xueqiu.android/.view.WelcomeActivityAlias -S(重点)
image.png
-
下一节:元素定位方法与隐式等待,包括id、aid定位与隐式等待结合打造稳定用例。







