Appium
1.1 App基础操作 API
完成app自动化需要一些基础条件的支持:APP初始化API
1.1.2 基础操作命令
1. 前置代码
# 导入driver对象
from appium import webdriver
import time
# server 启动参数
desired_caps = {}
# 设备信息(系统、版本、设备号)
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '192.168.72.103:5555'
# app信息(包名、启动名)
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 声明driver对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
# 关闭驱动对象
driver.quit()
2. 操作与命令
参阅:
- python appium 操作app
3. 应用
- 判断APP是否安装,存在则卸载,不存在则安装
# 判断APP是否安装,存在则卸载,不存在则安装
if driver.is_app_installed("com.oasisfeng.greenify"):
driver.remove_app("com.oasisfeng.greenify")
else:
driver.install_app("D:/PycharmProjects/test/apk/Greenify.apk")
- 判断当前设置页面是否有"网络和互联网"和 "电池"
# 获取当前页面内的元素结构
current_page_data = driver.page_source
for i in ("网络和互联网", "电池"):
if i in current_page_data:
print("True")
else:
print("False")
4. 整理与总结
- 初始化
vim initDriver.py
from appium import webdriver
import os
def init_driver():
desired_caps = {
# 系统
'platformName': 'Android',
# 版本
'platformVersion': '9',
# 设备号
'deviceName': 'os.system("adb devices")|sed -n "2p"|cut -d " " -f 1',
# 包名
'appPackage': 'com.android.settings',
# 启动名
'appActivity': '.Settings',
# 安装的APP
# 'app': 'apk/xx.apk',
}
# 声明手机驱动对象
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
return driver
- 主程序
vim main.py
from init_driver.initDriver import init_driver
import os
import time
import base64
def push_myfile(tag, pc_path, phone_path, driver=None):
# 电脑发送文件给手机
# tag=1调用adb,tag=2调用appium
if tag == 1:
os.system("adb push %s %s" % (pc_path, phone_path))
if tag == 2:
with open(pc_path, 'r') as f:
data = str(base64.b64encode(f.read().encode('utf-8')), 'utf-8')
driver.push_file(phone_path, data)
# def install_myapp(tag, path):
if __name__ == '__main__':
driver = init_driver()
# adb方式校验
push_myfile(tag=1, pc_path="hello.txt", phone_path="/sdcard/test.txt")
# Appium方式校验
push_myfile(tag=2, pc_path="hello.txt", phone_path="/sdcard/test.txt", driver=driver)
driver.quit()
1.2 手机控件查看工具uiautomatorviewer
用来扫描和分析Android应用程序的UI控件的工具
1.2.1 uiautomatorviewer使用
1. 使用工具
- 确保模拟机打开且没有连接上ADB
adb kill-server
- 运行批处理文件
- 效果
2. Q&A
(1) 使用SDK自带的uiautomatorviewer.bat调用uiautomatorviewer.jar打开Ui Aotumator Viewer程序容易产生以下问题:
产生原因:
真机或模拟机的安卓系统版本与uiaotumatorviewer.jar的兼容性问题
解决方法(已成功):
参阅:
- 512433465/autotest_helper
参阅:
- 更换默认输入法
参阅:
- adb 获取Android手机信息命令(2)
更新中......