介绍
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持iOS、Android及FirefoxOS平台测试。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。
特点:
- 跨架构
- 跨设备
- 跨语言
- 跨app
- 不依赖源代码
- 不限制测试框架和平台
实际应用(以Android平台为例)
1、安装jdk
我装的jdk1.8.0_20
2、安装Android studio,使用其中的sdk
3、sdk环境配置
1)在环境变量的系统变量中新建变量ANDROID_HOME,变量值就是adk对应的路径
2)点击编辑系统变量path,添加sdk的tools和platform-tools
3)点击确定,在cmd下运行adb devices
出现下面的就是正确了
如果只显示了list of devices attached 则需先在命令行输入adb connect 127.0.0.1:62001,再输入adb devices即可
4、安装模拟器(模仿Android的环境)
可以使用Android自带的模拟器,这里我使用的是夜神模拟器(相对较为流畅)
5、启动模拟器,出现桌面
6、安装Python
7、安装appium
注意:ip命令需要到python的scripts目录下用(因为pip.exe在那)
cmd下跳转到Python的script目录下,输入pip install appium-client,则自动安装
9、双击打开ANDROID_HOME/tools下的uiautomatorviewer.bat
出现以下界面
点击左上角第二个按钮,就可以显示模拟器中的界面
如果报错,一般是因为abd的问题,则再重复3、3)步骤则可以解决
这个应用是可以对apk中的元素进行定位,方便写Python脚本
Uiautomator具体的使用方法:
- 先找index,再找text,若再找不到则尝试找resource-id,再不行则尝试找父类,再不行就只能通过坐标
- 通过xpyth定位:
findElementByXPath("//android.widget.TextView[10]") xpath下标从1开始,使用完整的classname - 通过id定位:findElementById("com.xwtec.zhy.xwlottery:id/grid_item_tv_red");
- find_element_by_name(name对应uiautomator扫描后text的内容)
- find_element_by_id(id对应resource-id)
- find_element_by_class_name(class_name对应class)
- find_element_by_accessibility_id(accessibility_id对应content-desc)
- 定位到某个文本框,并输入内容:
text = driver.find_element_by_id("com.changhong.smartalbum:id/passwd_edit") text.send_keys("123456") - 滑动屏幕:
- 获取屏幕尺寸 width=self.driver.get_window_size()[‘width‘] height=self.driver.get_window_size()[‘height‘]
- 滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)