上篇文章介绍了Appium环境配置(安装的是Appium-desktop,版本号为1.12.1)
接下来通过Appium进行简单的自动化实战
1. 首先,用户需要连接手机设备/虚拟机,然后,桌面启动应用后并启动appium服务。
通过adb devices
可查看设备是否连接成功,并获取到设备的信息
也可通过
adb logcat>e:/log.txt
将设备运行的日志保存到相应的路径,此时只需要运行需要测试的APP就行了,可以在日志中找到测试的包名及需启动的Activity,如下:日志信息.png
2. 点击左上角配置入口,如下图
Appium主界面.png3. 在配置信息页面,初始化设备信息
操作系统(platformName),系统版本号(platformVersion),设备名称(deviceName),所测试的应用的包名(appPackage),及启动的Activity参数(appActivity),配置如下:
配置信息.png
4. 最后点击配置信息弹窗右下角的startSession即可启动
启动后,Appium desktop中即可看到相关日志
接下来实现appium+python实现自动化测试
1. 通过pip install Appium_Python_Client
安装
之前已经安装过Appium了,为什么还要下载Appium_Python_Client呢?
Appium是一个服务,Appium_Python_Client是让python连接Appium服务的驱动,即python语言封装和Appium api通讯的一个库
2. 通过python初始化设备基础信息,代码如下:
from appium import webdriver
desired_caps={}
desired_caps["platformName"]="Android"
desired_caps["platformVersion"]="8.0"
desired_caps["deviceName"]="emulator-5554"
desired_caps["appPackage"]="com.android.calculator2"
desired_caps["appActivity"]=".Calculator"
#设置收到下一条命令的超时时间,超时时Appium会自动关闭session,默认为60s
desired_caps["newCommandTimeout"]="300"
#webdriver.Remote实际上就是原生selenium webdriver的字类
#新建driver时须指定一个desired_caps对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
3. 定位操作元素并操作
#通过id定位到需要操作的元素
driver.find_element_by_id('com.android.calculator2:id/digit_3').click()
driver.find_element_by_id('com.android.calculator2:id/op_mul').click()
driver.find_element_by_id('com.android.calculator2:id/digit_3').click()
driver.find_element_by_id('com.android.calculator2:id/eq').click()
driver.quit() # 最后记得退出
操作元素的信息是怎么获取到的呢?
方法一:
通过Android SDK自带的Uiautomatorviwer工具获取页面元素信息,操作如下,可获取到操作元素的id class等信息,同时也可知道包名,如下图:
方法二:
通过Appium获取元素信息,通过上面的操作,startSession后,Appium会自动获取设备操作页面信息,用户将鼠标定位至需要获取的元素上后,即可获得元素的信息,如下:
image.png
参考文档:
我的Appium学习记录——从搭建环境到一个简单Android App测试实例
获取安卓app的appPackage和appActivity
appium、appium-python-client 有什么不同作用?另外 appium-python-client 安装的时候会把我旧版本的 selenium 卸载然后装很新版本的 selenium,原理又是什么呢?
网友评论