前言 这里以开发者头条APP为例,演示下APP自动化过程 一、操作前准备事项 appium运行的相关环境都配置好后。还要进行一些操作。 1.下载被测试的APP应用。 2.运行appiumserver,就是点击
前言
这里以开发者头条APP为例,演示下APP自动化过程
一、操作前准备事项
appium运行的相关环境都配置好后。还要进行一些操作。
1.下载被测试的APP应用。
2.运行appium server,就是点击appium desktop
- 启动后,点击advanced按钮,勾选选项Allow Session Override。如下图:
- 点击stat server启动appium server
3.启动被测APP运行环境,要么真实设备,要么模拟器
3.1连接真实设备,尽量原装数据线连接电脑,否则可能 连不上。
3.2然后手机要进入开发者模式,USB调试打开
这里举例Genymotion模拟器讲。
把刚才下载的开发者头条APP安装到模拟器中,就是将apk文件从文件管理器拖拽到虚拟手机设备窗口。
测试自动化任务:自动登录,需要事先注册账户
二、利用Python编写APP自动化代码并运行
在 pycharm编辑自动化代码
from appium import webdriver
import time,traceback
# 这里定义的 desired_capabilities,作为下面 webdriver.Remote
# 初始化一个webdriver的参数。
# 这些键值对告诉appium server 测试程序希望进行的是什么什么样的测试
# 比如下面 platformName 和 platformVersion 两个配置项
desired_caps ={}
desired_caps[‘platformName‘] = ‘Android‘--测试平台,不能写错
desired_caps[‘platformVersion‘] = ‘9‘--平台版本,不能写错
#android手机不一定要有,iOS手机一定要有deviceName
desired_caps[‘deviceName‘] =‘Huawei‘--设备名称
desired_caps[‘app‘] = r‘F:\apk\toutiao.apk‘--apk文件路径名,如果设备还没此APP,则会安装
#不是根据它的路径而是appid ,也就是这package name
desired_caps[‘appPackage‘] =‘io.manong.developerdaily‘--apk包名,一定要有,是每个APP的ID,标识该APP
#启动的activity
desired_caps[‘appActivity‘] = ‘io.toutiao.android.ui.activity.LaunchActivity‘--APP默认activity,就是启动页第一次进入的页面
# 一定要有该参数,否则测试过程中无法输入中文
desired_caps[‘unicodeKeyboard‘] = True
#自动化结束后恢复原始数据模样
desired_caps[‘resetKeyboard‘] =True
#保证了App测试前不会清除应用数据,缺省是会清除数据的。
desired_caps [‘noReset‘] = True
#appium server 认为和客户端之间无响应最大时间 超过将就会停止服务
desired_caps[‘newCommandTimeout‘] = 6000
注意:
如何获取apk包名和启动页activity
方法一:咨询开发
方法二(推荐):进入本地Android SDK中build-tools文件下--打开cmd窗口--执行命令【aapt.exe dump badging apk路径】
aapt.exe不是文件夹,所以别忘了输入
#appium server 在这个URI上接受客户端发送的rest API
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)
#下面操作自动化登录的过程
try:
driver.implicitly_wait(10)
driver.find_element_by_id(‘io.manong.developerdaily:id/tab_bar_plus‘).click()
time.sleep(1)
driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
time.sleep(1)
# 输入用户名、密码
ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
ele.send_keys(‘[email protected]‘) ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password") ele.send_keys(‘sdfsdf‘) time.sleep(2) # 点击登录 driver.find_element_by_id(‘io.manong.developerdaily:id/btn_login‘).click() passexcept: print (traceback.format_exc())input(‘**** Press to quit..‘)driver.quit()