APP自动化01-基础操作API-UIautomatorviewer-APP定位-元素等待-APP模拟手势高级操作
APP基础操作API
前置代码# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 解决输入中文
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
# Toast
desired_caps['automationName'] = 'Uiautomator2'
# 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
-
安装apk到手机
driver.install_app('app路径')
-
手机中移出apk
driver.remove_app(’APP包名‘)
-
判断app是否已经安装
driver.is_app_install(’APP包名‘)
-
发送文件到手机
import base64
with open("./push07.txt","r",encoding="utf-8") as f:
data=str(base64.b64encode(f.read().encode("utf-8")),"utf-8")
driver.push_file("/sdcard/push07.txt",data)
参数:
/sdcard/push07.txt:手机设备上的路径(例如:/sdcard/a.txt)
data:文件内数据,要求base64编码
Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;
生成的数据为byte类型,需要将byte转换回去 -
从手机中拉取文件
import base64
data = driver.pull_file(path) # 返回数据为base64编码
print(str(base64.b64decode(data),'utf-8')) # base64解码
参数:
path: 手机设备上的路径 -
获取当前屏幕内元素结构
driver.page_source
作用:返回当前页面文档,判断特点元素是否存在
手机控件查看工具UIautomatorviewer
作用:用来扫描和分析Android应用程序的UI控件的工具.
APP元素定位操作
name | Value |
---|---|
id | id属性值 |
Class | class属性值 |
Xpath | xpath表达式 |
文字定位:driver.find_element_by_xpath("//*[@text='定位文字']")
driver.find_element_by_xpath("//*[contains(@text,'部分文字')]")
WebDriverWait 显示等待操作
在一个超时时间范围内,每隔一段时间去搜索一次元素是否存在,
如果存在返回定位对象,如果不存在直到超时时间到达,报超时异常错误。
方法:WebDriverWait(driver, timeout, poll_frequency).until(lamda x:x.find_element_by_id('id属性值'))
参数:
1.driver:手机驱动对象
2.timeout:搜索超时时间
3.poll_frequency:每次搜索间隔时间,默认时间为0.5s
4.method:定位方法(匿名函数)
APP元素信息操作API
-
点击元素 .click()
-
发送数据到输入框 .send_keys()
-
清空输入框内容 .clear()
-
获取元素的文本内容 .text
-
获取元素的属性值 .get_attribute(value) #value是元素属性名
-
获取元素在屏幕上的坐标 .location
-
获取启动名和包名
获取包名方法:driver.current_package
获取启动名:driver.current_activity
APP元素事件操作API
-
swip滑动事件
从一个坐标位置滑动到另一个坐标位置
# 滑动持续5秒的时间
driver.swipe(188,659,148,248,5000) -
scroll滑动事件
driver.scroll(开始元素,结束元素)
-
drag拖拽事件
driver.drag_and_drop(el1,el2)
-
应用置于后台
APP放置后台,模拟热启动
# app置于后台5s后,再次展示当前页面
driver.background_app(5)
APP模拟手势高级操作
TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。
⚠️所有手势都要通过执行函数才会运行.
-
轻敲操作
方法:tap(element=None, x=None, y=None)
方法:perform() # 发送命令到服务器执行操作 -
按的操作
方法:press(el=None, x=None, y=None)
方法:release() # 结束动作,手指离开屏幕
再 preform() -
等待操作
wait(ms=0)
-
手指长按操作
long_press(el=None, x=None, y=None, duration=1000)
默认为1000毫秒 -
手指移动操作
方法:move_to(el=None, x=None, y=None).perform()
参数:
1.el:定位的元素
2.x:相对于前一个元素的X轴偏移量
3.y:相对于前一个元素的Y轴偏移量