一、环境搭建
1. 安装Appium
正常安装就好,中间根据机器情况可能会提示需要先安装.net framewor 4.0/4.5。
配置Appium 环境变量。C:Program Files (x86)Appium;C:Program Files (x86)Appium ode_modules.bin。在DOS窗口执行appium-doctor验证。
2. 安装JDK、SDK
安装JDK,配置JAVA_HOME、Path环境变量,并在DOS窗口执行java -version 进行验证。
将SDK解压至纯英文路径,配置Android、Path环境变量,注意Path中需要配置两个,;%ANDROID_HOME% ools;%ANDROID_HOME%platform-tools;,在DOS窗口执行adb、uiautomatorviewer验证。 Uiautomatorviewer可以获取屏幕快照及控件信息。
3. 安装手机模拟器。如果是用真机进行测试,可跳过本步。
模拟器有四种可选:genymotion、SDK自带的AVD、windroye以及第三方如夜游神之类的。
Genymotion需要先安装virtual box,然后下载对应的系统包vbox格式的文件,通过virtual box加载到genymotion中。本次试验使用真机,就没有安装安卓模拟器。
4. Python 环境安装
安装好Python,DOS窗口输入Python可进入Python命令行模式。
然后安装Python setup tools,然后通过pip安装appium 包。pip install Appium-Python-Client. 通过在Python编辑器中输入 from appium import webdriver进行验证。
二、小实验
通过appium启动手机计算器,进行3+6的计算,并校验结果是否等于9,然后输出测试结果。
这个过程需要用到的一些命令:
adb shell 进入手机内部系统
adb devices 查看目前链接的手机设备
adb install xxx.apk 向手机安装软件
通过uiautomatorviewer 查看软件控件参数和Activity
通过Catlog 软件查看软件包名、Activity、页面响应时间
1 #coding=utf-8 2 ''' 3 计算器-手机自动化 -加法 3+6=9? 4 ''' 5 from appium import webdriver 6 #1>获取手机信息--存储到字典中 7 desired_caps={} 8 #a.平台名称 9 desired_caps['platformName']='Android' 10 #b.android版本 11 desired_caps['platformVersion']='4.4.4' 12 #c.设备名称-- adb devices 13 desired_caps['deviceName']='192.168.56.101:5555' 14 #d.包名 15 #获取包名: uiautomatorviewer 16 desired_caps['appPackage']='com.android.calculator2' 17 #e. Activity名称 18 #CatLog工具安装: dos进入c盘--adb install CatLog.apk 19 desired_caps['appActivity']='.Calculator' 20 #2>连接appium启动app,将手机信息导入;http://127.0.0.1:4723 是appium的地址和端口号,可在appium设置中查看。/wd/hub是appium规定的后缀,记住就好。。 21 driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) 22 #3>定位 3+6=9? 23 # 3 resource-id-->对应id方法 24 driver.find_element_by_id("com.android.calculator2:id/digit3").click() 25 # + 碰到中文前面加小u content-desc-->对应的name方法 26 driver.find_element_by_name(u"加").click() 27 # 6 text-->对应的为name方法 28 driver.find_element_by_name("6").click() 29 30 # = 31 driver.find_element_by_id("com.android.calculator2:id/equal").click() 32 # 获取实际结果 class -- class_name text方法获取元素的内容,后面没有小括号 33 result=str(driver.find_element_by_class_name("android.widget.EditText").text) 34 35 # 由于我的手机计算器结果框会输出 3+6=9,所以做一下处理,只取出等号=后面的数字 36 result = result.split('=')[1] 37 38 #比对实际结果与预期结果,得出结论 39 if int(result)==9: 40 print "测试通过" 41 else: 42 print "测试失败" 43 44 #关闭计算器 45 driver.quit()
运行后,可以看到会自动启动计算器软件,输入3+6,最后在编辑器中输出测试结果。