Appium
1、简介
支持多种类型的自动化、支持多平台、支持多种编程语言
自动化程序(Appium客户端库)
Appium Server:转发自动化指令给手机
设备:iOS、Android(要安装自动化代理程序)ios (XCUITest) android(UIAutomator)
检测手机是否连上:adb devices -1
2、前置准备
1、安装jdk
2、安装SDK
3、安装模拟器
查看服务是否启动:
adb devices
nox_adb.exe connect 127.0.0.1:62001
3、代码
`运行代码前要先运行Appium Desktop
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '8', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App
'newCommandTimeout': 6000,
'automationName' : 'UiAutomator2'
# 'app': r'd:\apk\bili.apk',
}
# 连接Appium Server,初始化自动化环境
# 前面为Appium Server的服务端地址,固定的;desired_caps这个参数为主要信息
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置缺省等待时间
driver.implicitly_wait(5)
# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
iknow.click()
# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()
# 根据id定位搜索输入框,点击
sbox = driver.find_element_by_id('search_src_text')
sbox.send_keys('白月黑羽')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)
# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")
for ele in eles:
# 打印标题
print(ele.text)
input('**** Press to quit..')
driver.quit()
`
4、查找应用Package和Activity
(1)没有apk:应用已经在手机上安装
? 步骤:进入到要操作的界面,执行:
?
adb shell dumpsys activity recents | find "intent={"
其中第一行就是当前的应用,‘/’前的为package名,’/'后的全部为Activity
(2)有apk
获取package:
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name="
获取activity
d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity"
5、Appium配置连接模拟器
1、使用 命令查看安卓版本
6、界面查看工具
Appium需要工具查看界面元素的特征。
常用查看工具:Android SDK包中的uiautomateviewer和Appium Desktop中的appium inspector
1、uiautomateviewer:在tools\bin目录中
2、appium inspector
定位元素的方法:
1、通过resource-id定位:但这个ID 可能不唯一
driver.find_element_by_id('id')
2、根据class name定位:根据元素的类型,通常不唯一
? 适用于:(1)如果确定要查找的界面元素类型在当前界面中只有一个就可以用class来选择;
? (2)要找了一个类型的多个时
driver.find_elements_by_class_name('')
3、根据ACCESSIBILITY ID:元素的content-desc属性
? 适用于:如果要查询的界面元素有content-desc属性,可以通过它来定位选择元素
driver.find_elemnet_by_accessibility_id('')
4、根据Xpath:可靠性和性能不佳;
driver.find_element_by_xpath(’//’)
7、UI Automator
UI Automator测试框架提供了一组API来构建UI测试,用于在 用户应用和系统应用中进行交互
可以实现打开“设置”菜单或应用启动器等
适合编写黑盒自动化测试,测试代码不依赖于目标应用的内部
8、报错解决
https://www.cnblogs.com/deliaries/p/12449071.html
查看模拟器的package和activity
|