自动化学习day13 appium

1、环境配置
1、安装安卓模拟器
2、安装appium服务器
3、解压Android的adt-bundle压缩包
4、安装JDK
SDK文件解压后需要确认的环境变量:
JAVA_HOME C:\Program Files\Java\jdk1.8.0_51
JRE_HOME C:\Program Files\Java\jre1.8.0_51
ANDROID_HOME C:\adt-bundle-windows-x86_64-20140702\sdk
添加到 Path C:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools(这个是adb)
C:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W(这个是aapt)
安装Appium的Python客户端库 pip install Appium-Python-Client

打开安卓模拟器,通过adb connect 127.0.0.1:6555 命令连接
不同的模拟器端口号不同,具体不同模拟器的端口号可以参考
各模拟器adb连接端口(http://www.cnblogs.com/Nick1994/p/8342046.html)
2、通过python对APK进行元素定位
1、打开需要定位的apk页面
2、uiautomatorviewer.bat
3、打开appium、连接adb
4、点击uiautomatorviewer菜单栏第二个按钮
出现如下页面
自动化学习day13 appium
通过python定位元素需要import appium , appium中定位元素的方法与seleniu类似
都包括find_element 和find_elements两种,但其中对应关系略有不同
find_element_by_id对应text、resource-id
class对应class
appium也支持xpath定位
根据空间的xpath表达式定位
class替代html标签
//class[@id = ‘’ or @name= ‘’]
eg: //android.widget.TextView[@index = ‘test1’ and @test = ‘kw’]
//class[n] 在兄弟里排行第n个

层级定位
//class[…]/class[…]
eg:’//android.widget.ListView/android.widget.TextView[2]

根据属性的部分值匹配
eg://class[contains(@text,‘Ai’)]
accessibility_id对应content-desc

appiun有一个强大的元素定位的方法就是android_uiautomator()
android_uiautomator()定位

文本方面的方法(通过text属性匹配控件):

可以使用 1.text(String text) 文本

2.textContains(String text) 文本包含

3.textMatches(String regex) 文本正则

4.textStartsWith(String text) 文本开始字符

正则表达式元字符:
^ 开始位置
$ 结束位置
{m} 匹配次数=m
{m,} 匹配次数 >=m
{m,n} 匹配次数 >=m 并且 <= n
[] 备选列表 [abc] 代表a,b,c中到某个字符,也可以写成[a-c]
表示所有到小写字母[a-z]
表示所有到大写字母[A-Z]
表示所有到小写字母和大写字母[a-zA-Z]

^1[3578][0-9]{9}$

描述方面的方法(通过content-desc属性匹配控件):

可以使用1.description(String desc) 描述

可以使用2.descriptionContains(String desc) 描述包含

可以使用3.descriptionMatches(String regex) 描述正则

可以使用4.descriptionStartsWith(String desc) 描述开始字符

类名方面的方法:

1.childSelector(UiSelector selector) 子类

可以使用 2.className(String className) 类名

索性、实例方面的方法:

可以使用1.index(int index) 编号

2.instance(int instantce) 索引

特有属性:

1.checked(boolean val) 选择属性

2.clickable(boolean val) 点击属性

3.enabled(boolean val) enabled属性

4.focusable(boolean val) 焦点属性

5.longClickable(boolean val) 长按属性

6.scrollable(boolean val) 滚动属性

7.selected(boolean val) 选择属性

包名方面的方法:

1.packageName(String name) 包名

2.packageNameMatches(String regex) 包名正则

资源ID方面的方法:

可以使用1.resourceId(String id) 资源ID

可以使用2.resourceIdMatches(String regex) 资源ID正则