Robotframework+Appinum+Python环境搭建与测试
这两天把Appinum研究了下,在自己电脑上配置了下测试环境,这里记录下搭建过程。
1.JDK环境配置
之前做Java的时候下载安装过jdk,但由于下载安装的不是Oracle官网的jdk,导致下载android-sdk后运行SDK Manager.exe时就一闪而过,后来又重新下载了jdk配置环境后打开SDK Manager.exe才正常。
2.安装配置Node.js
这里可以百度Node.js的安装过程,这里用的是Desktop版的Appium-Server-GUI-windows。
3.下载安卓android-sdk
地址:https://www.androiddevtools.cn/,然后需要配置系统变量ANDROID_HOME,再环境变量中添加两个%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools。
右键使用管理员打开SDK Manager.exe,然后选中下图Installed的包并下载,这个耗时毕竟久需等待。
4.下载Appium-Server、Appium Inspector,下载地址https://github.com/appium
5、下载安卓模拟器
这里我用的夜神模拟器,安装后在命令行输入命令:adb devices,可以看到模拟器列表,如果出现下面的错误:list of devices attached时可以尝试adb kill-server和adb start-server命令重启下adb服务。
刚开始是平板模式,可以通过设置选择手机模式
6、安装appinum-doctor
使用命令行安装appinum-doctor:npm -g install appium-doctor。
安装后执行appium-doctor检测配置是否成功。warn警告没问题,error的需要注意。
7.启动Appium Server
因为需要在测试用例中执行adb shell命令,所有需要勾选Relaxed Security。
8.启动模拟器
执行adb devices查看模拟器。
9.启动Appium Inspector
Remote Path中输入/wd/hub,然后设置Capability,platformVersion是模拟器版本。这里appPackage设置的通讯录的,至于怎么获取appPackage和appActivity,可以在模拟器中打开应用,然后使用命令:adb shell dumpsys window windows查看。
{ "platformName": "Android", "appium:platformVersion": "7.1.2", "appium:deviceName": "127.0.0.1:62001", "appium:appPackage": "com.android.contacts", "appium:appActivity": "com.android.contacts.activities.PeopleActivity", "appium:noReset": true, "appium:newCommandTimeout": "600", "appium:autoGrantPermissions": false }
最后点击Start Session启动
10.刷新Appium Inspector
开始时一直找怎么刷新Appium Inspector页面,但就是没改变左侧页面,没办法获取元素xpath等信息,后来发现原来是和模拟器有关联,在模拟器打开页面后,可通过点击Appium Inspector顶部的圈圈刷新按钮刷新页面,这样就能获取新页面元素的xpath。
11.安装python类库
前面说过Robotframework环境搭建,这里就不介绍,主要安装下面两个类库
pip install Appium-Python-Client
pip install robotframework-appiumlibrary
12.编写测试用例
首先引入AppiumLibrary类库,这里是模拟人点击来新增通讯录。
*** Settings *** Library AppiumLibrary *** Test Cases *** test123 Open Application http://127.0.0.1:4723/wd/hub alias=myapp1 platformName=Android platformVersion=7.1.2 deviceName=127.0.0.1:62001 appPackage=com.android.contacts appActivity=com.android.contacts.activities.PeopleActivity sleep 3 Execute Adb Shell pm grant com.android.contacts android.permission.READ_CALENDAR Execute Adb Shell pm grant com.android.contacts android.permission.ACCESS_FINE_LOCATION Execute Adb Shell pm grant com.android.contacts android.permission.READ_SMS sleep 2 Click element id=com.android.contacts:id/floating_action_button sleep 2 Click element id=com.android.contacts:id/left_button sleep 2 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='姓名'] cuiyw sleep 2 Click element xpath=//android.widget.Spinner[@content-desc="电话"]/android.widget.TextView sleep 1 Click element xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.CheckedTextView[2] sleep 1 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='电话'] 18575533041 sleep 2 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='电子邮件'] 18575533041@qq.com sleep 2 Click element xpath=//android.widget.TextView[@content-desc="保存"] sleep 2
这里在新增通讯录时会请求权限信息,位置、日历、短信3个权限,这里我使用Execute Adb Shell关键字先给应用授权,避免了弹出授权框,如果把上面的三个Execute Adb Shell关键字行注释就会弹出下面的窗口。
执行完上面的测试用例则会在通讯录里有新增的信息。
作者:社会主义接班人
出处:http://www.cnblogs.com/5ishare/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。