实验简介
对于APP测试来讲, 除了进行功能测试以外, 安装和卸载其实也是一个很重要的测试项.
试想, 如果用脚本来实现了, 可以事先判断该应用是否已安装, 根据判断结果来执行安装和卸载的动作, 循环它个1000遍, 顺便还可以把安装卸载的稳定性测试也一并做了, 想想还是蛮美好的呢!
实验目的
1. 使用Python + Appium实现apk的安装
2. 使用Python + Appium实现apk的卸载
3. 使用Python + Appium实现apk的关闭或启动等其它操作
实验流程
1. 安装应用
安装应用到设备中去。需要apk包的路径。上代码.
from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' #设备系统 desired_caps['platformVersion'] = '23' #设备系统版本 desired_caps['deviceName'] = 'Android Emulator' #设备名称 # 测试apk包的路径 apk_path = r'E:PythonAPPTestContactManager.apk' desired_caps['app'] = apk_path driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 安装apk driver.install_app(apk_path) # 判断该apk是否安装, 结果为True/False is_installed = driver.is_app_installed('com.example.android.contactmanager') if is_installed: print('安装成功.') else: print('安装失败.') driver.quit()
由于apk还没有安装成功, 该apk的activity信息还没有, 所以一定不要加上, 否则会报错的.
2. 卸载应用
从设备中删除一个应用。上代码.
from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' #设备系统 desired_caps['platformVersion'] = '23' #设备系统版本 desired_caps['deviceName'] = 'Android Emulator' #设备名称 desired_caps['appPackage'] = 'com.example.android.contactmanager' desired_caps['appActivity'] = '.ContactManager' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 判断该apk是否安装, 结果为True/False is_installed = driver.is_app_installed('com.example.android.contactmanager') print(is_installed) driver.remove_app('com.example.android.contactmanager') is_installed = driver.is_app_installed('com.example.android.contactmanager') print(is_installed) driver.quit()
3. 关闭应用
关闭打开的应用,默认关闭当前打开的应用,所以不需要入参。这个方法并非真正的关闭应用,相当于按home键将应用置于后台,可以通过launchApp()再次启动。
driver.closeApp()
4. 启动应用
你一定很迷惑,不是在初始化的配置信息已经指定了应用,脚本运行的时候就需要启动应用,为什么还要有这个方法去启动应用呢?当应用置于后台之后, 再次唤醒罢了.
重新启动应用也是一个测试点,该方法需要配合closeApp()使用的。
driver.closeApp();
driver.launchApp();
5. 检查应用是否安装
检查应用是否已经安装。需要传参应用包的名字。返回结果为Ture或False。在安装卸载的代码中我们已经使用过该方法.
driver.is_app_installed('com.example.android.contactmanager')
6. 将应用置于后台
将当前活跃的应用程序发送到后台。这个方法需要入参,需要指定应用置于后台的时长。
driver.runAppInBackground(2);
7. 应用重置
重置当前被测程序到出始化状态。该方法不需要入参。
其实就是先closeApp然后在launchAPP
driver.resetApp();