本文首发于:行者AI
Appium是一个自动化开源工具,反对iOS、Android和Windows桌面平台上的原生、挪动Web和混合利用的自动化。Appium是跨平台的:它容许你用同样的API对多平台(iOS、Android、Windows)写测试。做到在iOS、Android和Windows测试套件之间复用代码。
1. 下载安装及环境配置
1.1 装置python装置Appium-Python-Client库
能够应用pip命令进行装置pip install Appium-Python-Client
,装置实现后在python中运行此段代码from appium import webdriver
校验是否装置胜利 。
1.2 装置Android SDK
(1)在官网上下载Android Studio,其中蕴含了Android SDK,网页下拉到底部的Command line tools only,下载其中的windows版本,下载实现后解压,CMD命令行中cd到bin目录下,输出sdkmanager "platfrom-tools" "platforms;android-28" "build-tools;28.0.3"
执行装置组件,过程中弹出Accept?(y/N),输出y回车即可。
(2)组件装置实现之后,执行以下步骤将Android SDK退出到环境变量中。
- 在零碎环境变量中创立ANDROID_HOME变量,值为SDK装置的根目录门路,例如:E:\android_sdk
- 将%ANDROID_HOME%\platform-tools退出到环境变量Path中
- 验证设置胜利否:CMD命令行下输出
adb version
回车,能够看到以后adb的版本信息,阐明Android SDK曾经装置并配置胜利
1.3 装置JDK
(1)在oracle官网下载安装JDK,装置JDK8及以上的版本。
(2)装置实现后,设置JDK的环境变量。
- 在零碎环境变量中创立JAVA_HOME变量,值为JDK装置的跟目录门路,例如:C:\Program Files\Java\jdk1.8.0_231
- 在零碎环境变量中创立CLASSPATH变量,值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
- 在Path变量中增加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
- 验证JDK环境配置是否胜利,CMD命令行下输出
java -version
回车,能够看到以后JDK的版本信息,阐明JDK曾经装置并配置胜利
1.4 装置appium server
(1)在appium官网上下载Appium Desktop进行装置,找到与本人应用的零碎对应的版本,本次所有操作都是在windows上进行的。
(2)装置实现后,启动appium,host和port默认即可,在Edit Configuration中将Android SDK和Java JDK加到环境变量中。
(3)设置好后保留并重启Appium,而后启动服务,呈现以下画面,阐明你的appium server曾经失常启动了,能够开始真机测试了。
2. 真机测试
2.1 真机设置
USB连贯手机,关上手机开发者模式,关上开发者选项中的USB调试、USB装置,小米手机还须要关上USB调试(平安设置),而后在CMD命令行输出adb devices
回车,如果呈现了手机的设施号,阐明连贯胜利。
2.2 设置Appium
(1)点击Start Inspector Session对进行Desired Capabilities的配置,在JSON Representation中输出以下json数据点击保留进行疾速的配置,也能够在右边一项一项的增加。platformName、platformVersion、deviceName、appPackage、appActivity这五个参数是必填项。
{"platformName": "Android", # 申明是ios还是Android零碎"platformVersion": "8.1.0", # Android内核版本号"deviceName": "MI_5X", # 连贯的设施名称"appPackage": "com.tencent.qqmusic", # apk的包名"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity"resetKeyboard": True,"noReset": True # 在开始会话之前不要重置应用程序状态}
以上数据通过adb命令获取,获取appPackage与appActivity时须要将app启动,获取命令如下:
(2)配置好Desired Capabilities后,点击Start Session,app启动运行之后能够在界面上点击抉择查看以后页面所有元素控件的详细信息,右侧Selected Element下方有三个按钮。
- Tap:执行选中元素的点击操作
- Send Keys:为文本框等input对象传值
- Clear:革除输入框中的文本
2.3 编写自动化脚本
启动session胜利运行app之后,点击你想要操作的元素,在左边能够看到这个元素的相干信息,这里咱们能够通过id对该元素进行操作,在python中应用find_element_by_id()办法定位该元素,还有很多办法能够定位元素。
如:find_element_by_xpath()、driver.find_element_by_name()、driver.find_element_by_partial_link_text()等,应用click()办法对元素进行点击操作,应用swip()办法对屏幕进行滑动操作。
上面是python实现操作的源码展现,运行之后能够看到手机主动实现了启动app、点击、滑动和退出的操作后,阐明python脚本运行胜利。须要留神的是在实现上一步操作之后因为手机性能的差别,app的响应速度不同,倡议期待几秒后再进行下一步操作。
import timefrom appium import webdrivercaps = {"platformName": "Android", # 申明是ios还是Android零碎"platformVersion": "8.1.0", # Android内核版本号"deviceName": "MI_5X", # 连贯的设施名称"appPackage": "com.tencent.qqmusic", # apk的包名"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity"resetKeyboard": True,"noReset": True # 在开始会话之前不要重置应用程序状态}driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) # 启动apptime.sleep(15)el1 = driver.find_element_by_id("com.tencent.qqmusic:id/clt") # 定位<分类歌单>元素el1.click() # 点击time.sleep(5)driver.swipe(500, 1550, 500, 800) # 从(500, 1500)滑动到(500, 800)driver.quit() # 退出
3. 总结
Appium是目前比拟成熟的自动化测试工具,应用了零碎自带的自动化框架,不须要把Appium特定的或者第三方的代码编译进你的利用,这样就能够应用正式公布的包进行测试,不必放心测试包与正式包存在区别。同时能够联合python已有的测试框架,例如:pytest、unittest,编写测试用例,执行自动化测试。Appium还有很多很乏味的性能没有介绍到,欢送有疑难或者倡议的敌人与咱们一起探讨。