Appium系列分享
Appium自动化(一)常用的API接口
Appium自动化(二)常用的API接口
Appium自动化(三)常用的API接口
Appium自动化(四)常用的API接口
Appium自动化(五)常用的API接口
Appium自动化(六)Appium启动app
Appium自动化(七)通过脚本自动化获取apk的包名和对应启动activity
Appium自动化(八)通过脚本自动化获取设备deviceName和platformVersion
Appium自动化(九)如何处理多设备的启动参数
Appium自动化(十)如何控制多设备并行执行测试用例
Appium自动化(十一)实现一个简单的登陆功能
Appium自动化(十二)Appium+unittest组织测试用例
Appium自动化(十三)引入ddt管理测试用例数据
Appium自动化(十四)引入分层化思想优化代码
Appium系列(十五)继续利用分层化思想优化代码
Appium系列(十六)如何维护用例中定位元素
Appium系列(十七)将Appium服务端口号通过参数传递给测试用例
Appium系列(十八)多设备并行执行测试用例
前言
在上一篇文章--Appium系列(十八)多设备并行执行测试用例中,我们对多用例执行进行改造,但是改完后会不会出现问题呢,我们在调试中遇到了问题,怎么解决呢。本文带你解决之前代码运行出现的问题。
正文
我们运行之前启动的代码。我们发现代码运行了,但是只启动了一台设备,为什么呢,我们看下日志。
我想到的是不是在安装app出现了问题,我试着用adb去安装下,发现adb可以正常安装app。那么我们打印下对应的日志。看下在用例初始化的问题。我们发现在下面的第二行出现了问题,默认取的都是第一个,
packname=get_apkname(apk_path)dev=get_devices()[0]is_first_install=False#1.判断是否安装appis_install=isinstallapk(packname,dev)ifis_installisFalse:#2.如果没有安装,则安装installapk(apk_path,dev)is_first_install=True#3.启动apk测试apkname=get_apkname(apk_path)launcheractivity=get_apk_lautc(apk_path)desired_caps={platformName:Android,deviceName:dev,#adbdeivcesplatformVersion:getPlatForm(dev),appPackage:apkname,#包名appActivity:launcheractivity,#apk的launcherActivity}
这里的有问题,应该是根据参数来获取的,所以,我们对这里进行改造。因为在前面的进程中,我们有传递,所以我们可以直接获取即可。
is_first_install=False#1.判断是否安装appis_install=isinstallapk(self.parme[appPackage],self.parme[deviceName])ifis_installisFalse:#2.如果没有安装,则安装installapk(apk_path,self.parme[deviceName])is_first_install=Truedesired_caps={platformName:Android,deviceName:self.parme[deviceName],#adbdeivcesplatformVersion:self.parme[platformVersion],#从设置中可以获取appPackage:self.parme[appPackage],#包名appActivity:self.parme[appActivity],#apk的launcherActivity#skipServerInstallation:True}self.driver=webdriver.Remote(