1. 启动新app
driver.start_activity("包名","启动名")
# 短信包名 启动名 com.android.mms .ui.ConversationList
# 启动短信
driver.start_activity("com.android.mms", ".ui.ConversationList")
import time
from appium import webdriver
desired_caps = dict()
desired_caps["platformName"] = 'Android'
desired_caps["platformVersion"] = '5.1'
desired_caps["deviceName"] = 'sanxing'
desired_caps["appPackage"] = 'com.android.setting'
desired_caps["appActivity"] = '.Settings'
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(2)
driver.start_activity("com.android.mms",".ui.ConversationList")
2. 关闭app
driver.close_app() # 关闭app 但不会关闭驱动对象
driver.quit() # 关闭app 同时关闭驱动对象
"""close_app()"""
time.sleep(2)
driver.close_app()
time.sleep(2)
driver.start_activity("com.android.mms", ".ui.ConversationList")
"""quit()"""
time.sleep(2)
driver.quit()
driver.start_activity("com.android.mms", ".ui.ConversationList")
3. 安装apk到手机
driver.install_app("apk文件绝对路径")
# 兼容系统写法
driver.install_app(os.getcwd() + os.sep + "com.example.corel.calc_2.1.1023_11.apk")
4. 从手机卸载app
driver.remove_app("app包名") # 注意不能卸载系统app
import os
from appium import webdriver
desired_caps = dict()
desired_caps["platformName"] = 'Android'
desired_caps["platformVersion"] = '5.1'
desired_caps["deviceName"] = 'sanxing'
desired_caps["appPackage"] = 'com.android.settings'
desired_caps["appActivity"] = '.Settings'
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
driver.install_app(os.getcwd() + os.sep + 'com.example.corel.calc_2.1.1023_11.apk')
driver.remove_app("com.example.corel.calc")
driver.quit()
5. 判断app是否安装
driver.is_app_installed(app包名) # 如果手机安装返回True 未安装返回False
"""判断计算是否安装 安装->卸载 未安装->安装"""
isApp = driver.is_app_installed("com.example.corel.calc")
if isApp:
driver.remove_app("com.example.corel.calc")
else:
driver.install_app(os.getcwd() + os.sep + 'com.example.corel.calc_2.1.1023_11.apk')
6. base64加密、解码
import base64
value = "hello"
# base64加密
data = str(base64.b64encode(value.encode('utf-8')), 'utf-8')
print(data)
# base64解码
de_data = str(base64.b64decode(data), 'utf-8')
print("de_data:", de_data)
7. 发送文件到手机
driver.push_file("手机存储路径","base64编码数据")
import base64
str(base64.b64encode("数据".encode('utf-8')), 'utf-8')
"""
将hello写⼊到⼿机/sdcard/abc.txt
"""
data = str(base64.b64encode("hello".encode('utf-8')), 'utf-8')
driver.push_file("/sdcard/abc.txt", data)
❗注意:如果不指定手机文件存储名字,也可以完成发送,但是文件是以appium开头以.tmp结尾的临时文件,不方便维护
8. 从手机拉取文件
driver.pull_file("手机文件路径") # 返回⽂件中经过base64编码数据
import base64
str(base64.b64decode(编码数据), 'utf-8')
"""
将⼿机/sdcard/abc.txt⽂件数据拉取到电脑
"""
data = driver.pull_file('/sdcard/abc.txt')
print("拉取回数据:", data)
re_data = str(base64.b64decode(data), 'utf-8')
print("解码后数据:", re_data)
9. 获取当前屏幕元素结构
driver.page_source # 返回当前屏幕内元素的xml字符串
❗ 注意:每一个元素都包含一些属性和属性值
# 写入文件
with open("./page.xml", 'w') as f:
f.write(driver.page_source)
10. 查看手机页面元素
uiautomatorviewer
位置:sdk家目录下的tools目录中(从系统变量中找)
使用时:
1.手机需要打开对应页面,在使用uiautomatorviewer截图
2.找元素找可选中最⼩单位
元素属性:
text属性
resource-id属性
class属性
content-d