1.能够安装Appium桌面客户端
2.能够安装Appium-python库
Appium是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合型应用,且是垮平台的,可用于Android和IOS操作系统。
重要的是Appium是跨平台的,可以针对不同的平台用一套api来编写脚本
1.Appium桌面客户端安装方式
2.Appium-python库安装
1.能够使用appium启动任意应用程序
2.能够了解"前置代码"中各项参数的含义
在做app自动化的时候,我们肯定是针对某个产品。某个软件进行测试,那么我们一定是先让模拟器或真机帮我们打开着款软件才可以,所以下来要学的就是如何打开某浩哥应用程序。
使用一下步骤打开模拟器中的《设置》应用程序:
1.打开手机模拟器
2.打开Appium
3.创建一个python项目,取名为hello_appium
4.创建一个demo.py文件
5.将一下代码直接复制,并运行
from appium import webdriver
import time
desired_caps = dict()
#平台的名字,大小写无所谓,不能乱写
desired_caps['platformName'] = 'Android'
#平台的版本(5.4.3可以写5.4.3,5.4,5都是可以的)
desired_caps['platformVersion'] = '5.1'
#设备的名字,对于安卓来说可以随便写,IOS要和设备一致
desired_caps['deviceName'] = '127.0.0.1:62001'
#要打开的应用程序
desired_caps['appPackage'] = 'com.android.settings'
#要打开的界面
desired_caps['appActivity'] = '.Settings'
#连接appium服务
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)
driver.quit()
更改配置信息
如果一个应用需要跳转到另一个应用,就可以使用这个api进行应用的跳转,就像我们通过外卖应用下订单后会跳转到支付应用一样
#脚本内启动其他app
#参数
# appPackage:要打开的程序包名
# appActivity:要打开的程序的界面名
driver.start_activity(appPackage,appActivity)
当我们从一个应用跳转到另一个应用时,想输出其包名、界面名,或者想在报告中展现对应信息,我们就可以调用这个属性来进行获取
#获取包名
driver.current_package
#获取界面名
driver.current_activity
打开《设置》应用程序输出当前的包名和界面名
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)
#打印当前包名
print(driver.current_package)
#打印当前界面名
print(driver.current_activity)
driver.quit()
有的时候我们需要关闭某个应用程序后,再打开新的应用,那么如何关闭应用程序?
#关闭当前操作的app,不会关闭驱动对象
driver.close_app()
#关闭驱动对象,同时关闭所有关联的app
driver.quit()
打开《设置》,使用close_app()方法关闭,再尝试使用quit()方法,最后打印当前程序的包名,观察区别
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(3)
#关闭应用程序
driver.close_app()
# 关闭驱动对象
driver.quit()
一些应用市场的软件可能会有一个按钮,如果某一个程序已经安装则卸载,如果没有安装则安装
#安装app
#参数:
# app_path:apk路径
driver.install_app(app_path)
#卸载app
#参数
# app_id:应用程序包名
driver.remove_app(app_id)
#判断app是否已经安装
#参数:
# app_id:应用程序包名
#返回值:
#布尔类型,True为安装,False为没有安装
driver.is_app_installed(app_id)
如果《慕课网》已经安装,则卸载,如果没有则安装
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(3)
if driver.is_app_installed('cn.com.open.mooc'):
driver.remove_app('cn.com.open.mooc')
else:
driver.install_app("C:\\Users\\admin\\Desktop\\william\\imooc7.3.710102001android.apk")
time.sleep(5)
银行类app会在进入后台一定时间后,如果再回到前台页面,会重新输入密码,如果要测试这种功能,可以使用这个api进行测试
#app放置到后台一定时间后再回到前台,模拟热启动
#参数:
# seconds:后台停留多少秒
driver.background_app(seconds)
打开《设置》应用,进入后台5秒,再回到前台
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(3)
driver.background_app(5)
time.sleep(3)
热启动:表示进入后台回到前台,关机再开这种切断电源的行为可以叫做“冷启动”