前面一篇,我们介绍了第一个appium自动化测试脚本,已经学会了,如何安装一个apk包并启动它。那么,如果你把前面一篇的脚本运行多次,你就会发现,我们运行一次脚本都会执行安装一次包的过程。其实在安装之前,appium自动把你安装过得手机百度给卸载,然后再次安装。怎么知道它再次安装了呢,如果你运行一次,启动之后,还需要你手点击同意各种权限申请弹窗,说明这个包已经被重新安装过一次。那么问题就来了,有没有办法,不让它继续安装,毕竟第一次我们已经成功安装了,接下来,我们需要做其他事情,例如找元素,点击或者输入。
代码解决办法
我们通过代码传入参数,让noReset设置True。其实在早期appium软件界面是有这个noReset的选择项,当前我的V1.6.5,界面设置上已经没有了这个选项,目前只能通过代码来设置,具体代码如下。
import os
from appium import webdriver
apk_path = os.path.abspath(os.path.join(os.path.dirname(__file__),"..")) #获取当前项目的根路径
desired_caps ={}
desired_caps['platformName'] = 'Android' #设备系统
desired_caps['platformVersion'] = '6.0.1' #设备系统版本
desired_caps['deviceName'] = 'KIW-AL10' #设备名称
# 测试apk包的路径
desired_caps['app'] = apk_path + '\\app\\shoujibaidu.apk'
# 不需要每次都安装apk
desired_caps['noReset'] = True
# 应用程序的包名
desired_caps['appPackage'] = 'com.baidu.searchbox'
desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity'
#如果设置的是app包的路径,则不需要配appPackage和appActivity,同理反之
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
运行一下,果然没有再次卸载和安装手机百度应用。注意,这里没有再次执行安装,所以,是根据appPackage和appActivity两个参数来定位手机中的应用,找到后并打开这个应用。下一篇,介绍如何定位元素,所有的自动化都是基于元素操作的,所以我们需要掌握先如何定位安卓app中的页面元素对象,先学元素定位,然后再学元素操作。