一、capabilities设置与启动html
①启动本地服务器node
②启动检查器python
③填入相应的参数web
deviceName获取方式:adb devices服务器
appPackage获取方式:aapt dump badging + 包名app
appActivity获取方式:aapt dump badging + 包名dom
快速匹配:aapt dump badging + 包名 | find “launchable-activity”spa
关于跟手机创建链接:.net
https://blog.csdn.net/JOJOY_tester/article/details/72081905debug
Appium几种定位元素的方法:
一、id定位
二、元素定位
①name、classname定位
②相对定位
三、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'值的属性的学生元素 |
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
四、list定位
find_elements_by_xx (多个元素定位)
生成随机的帐户:用到random
五、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.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级别最为合适。
日志格式化是为了提升日志的可阅读性,好比:时间+模块+行数+日志具体信息 的内容格式。若是日志信息杂乱无章的所有输出来,这样也不利于定位问题。以下所示就是日志格式化输出,很是便于阅读查看。