1、capabilities设置与启动
①启动本地服务器
②启动检查器
③填入相应的参数
deviceName获取方式:adb devices
appPackage获取方式:aapt dump badging + 包名
appActivity获取方式:aapt dump badging + 包名
快速匹配:aapt dump badging + 包名 | find “launchable-activity”
关于跟手机建立连接:
https://blog.csdn.net/JOJOY_tester/article/details/72081905
Appium几种定位元素的方法:
1、id定位
2、元素定位
①name、classname定位
②相对定位
3、xpath定位('//*[@类名="xxx"]')
XPath使用路径表达式从XML文档中选择一个或多个节点的列表。以下是有用的路径和表达,从XML文档选择节点的任何节点/列表清单。
表达式 | 描述 |
---|---|
node-name | 选择具有给定名称的所有节点“nodename” |
/ | 选择从根节点开始 |
// | 选择从当前节点匹配开始的选择 |
. | 选择当前节点 |
.. | 选择当前节点的父节点 |
@ | 选择属性 |
student | 例如:选择名称为“student”的所有节点 |
class/student | 例如:选择属于类的所有学生的子类元素 |
//student | 选择文档中所有学生的元素 |
谓词
谓词用于查找特定的节点或一个节点含有特定的值,并使用所定义 [...] .
表达式 | 结果 |
---|---|
/class/student[1] | 选择的是类元素的子第一个学生的元素 |
/class/student[last()] | 选择的是类元素的子最后一个学生的元素 |
/class/student[last()-1] | 选择的是类元素倒数的第二个学生的子元素 |
//student[@rollno='493'] | 选择一个名为rollno为'493'值的属性的学生元素 |
xpath匹配符
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
4、list定位
find_elements_by_xx (多个元素定位)
生成随机的账户:用到random
5、Android Uiautomator定位
元素等待
http://www.cnblogs.com/mengyu/p/6972968.html
①强制等待
设置固定的等待时间,使用sleep()方法实现
from time import sleep
# 强制等待5秒
sleep(5)
②隐式等待
隐式等待是针对全部元素设置的等待时间
driver.implicitly_wait(2) # 等待2秒
③显式等待
显式等待是针对某个元素来设置的等待时间
Toast元素识别
H5元素搭建
屏幕截图
driver.save_screenshot() 保存截图到当前路径
driver.get_screenshot_as_file() 保存截图到指定路径
appium滑动操作
连续滑动
TouchAction
先导入对应的模块:
from appium.webdriver.common.touch_action import TouchAction
对应操作的方法:
短按:press() 按压一个元素或坐标
TouchAction(driver). press(x,y)
长按:longpress() 比按压多个一个duration(按压时间)时间参数,以毫秒为单位
TouchAction(driver).longpress(x,y,1000)
点击:tap()
移动:move_to()
暂停:wait() 等待时间,单位毫秒
释放:release() 结束屏幕上的一系列动作的命令操作
执行:perform() 讲执行的操作发送到服务器的命令操作
组合示例:
TouchAction(driver). press(x,y) .wait(1000).move_to(x2,y2).release() #点击->等待1000毫秒->移动->释放
地图缩放
MultiAction
导入
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
capabilities更改为yaml
官网下载地址:https://pypi.org/project/pyaml/
pip install pyyaml 安装yaml
如果遇到报:
处理方法:
安装完毕后检测是否安装成功 cmd->python->import yaml
日志收集
首先我们日志需要按照info、debug、error等级别来进行区分的。当然这个级别可以自己去设置。在一般的情况下我们普通的输出我们直接用info类型,调试的时候用debug类型,如果预计有错误时那么我们就需要用error类型的日志,一般情况去info级别最为合适。
日志格式化是为了提高日志的可阅读性,比如:时间+模块+行数+日志具体信息 的内容格式。如果日志信息杂乱无章的全部输出来,这样也不利于定位问题。如下所示就是日志格式化输出,非常便于阅读查看。