移动自动化测试-Appium基础操作API

    技术2022-07-11  123

    Appium自动化测试框架

    学习目标:

    1.能够安装Appium桌面客户端 2.能够安装Appium-python库

    Appium介绍:

    Appium是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合型应用,且是垮平台的,可用于Android和IOS操作系统。 重要的是Appium是跨平台的,可以针对不同的平台用一套api来编写脚本

    Appium自动化测试环境搭建:

    1.Appium桌面客户端安装方式 2.Appium-python库安装

    Hello Appium

    学习目标:

    ​ 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()
    二、参数详解
    应用场景:

    更改配置信息

    Appium基础操作API

    1.1 在脚本内启动其他app
    应用场景:

    如果一个应用需要跳转到另一个应用,就可以使用这个api进行应用的跳转,就像我们通过外卖应用下订单后会跳转到支付应用一样

    方法和参数:
    #脚本内启动其他app #参数 # appPackage:要打开的程序包名 # appActivity:要打开的程序的界面名 driver.start_activity(appPackage,appActivity)
    1.2 获取app的包名和界面名
    应用场景:

    当我们从一个应用跳转到另一个应用时,想输出其包名、界面名,或者想在报告中展现对应信息,我们就可以调用这个属性来进行获取

    属性名:
    #获取包名 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()
    1.3 关闭app和驱动对象
    应用场景:

    有的时候我们需要关闭某个应用程序后,再打开新的应用,那么如何关闭应用程序?

    方法名:
    #关闭当前操作的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()
    1.4 安卓和卸载以及是否安装app
    应用场景:

    一些应用市场的软件可能会有一个按钮,如果某一个程序已经安装则卸载,如果没有安装则安装

    方法名:
    #安装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)
    1.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)

    注意点:

    热启动:表示进入后台回到前台,关机再开这种切断电源的行为可以叫做“冷启动”

    Processed: 0.015, SQL: 9