前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium系列(十九)解决多机并行中的问题

Appium系列(十九)解决多机并行中的问题

作者头像
雷子
发布2021-03-30 16:38:41
8340
发布2021-03-30 16:38:41
举报

前言

在上一篇文章--Appium系列(十八)多设备并行执行测试用例中,我们对多用例执行进行改造,但是改完后会不会出现问题呢,我们在调试中遇到了问题,怎么解决呢。本文带你解决之前代码运行出现的问题。

正文

我们运行之前启动的代码。我们发现代码运行了,但是只启动了一台设备,为什么呢,我们看下日志。

我想到的是不是在安装app出现了问题,我试着用adb 去安装下,发现adb可以正常安装app。那么我们打印下对应的日志。看下在用例初始化的问题。我们发现在下面的第二行出现了问题,默认取的都是第一个,

代码语言:javascript
复制
packname = get_apkname(apk_path)       
 dev = get_devices()[0]      
   is_first_install = False        # 1.判断是否安装app      
     is_install = isinstallapk(packname, dev)       
      if is_install is False:            # 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,  # adb  deivces  
            'platformVersion': getPlatForm(dev), 
            'appPackage': apkname,  # 包名    
            'appActivity': launcheractivity,  # apk的launcherActivity        
                 }

这里的有问题,应该是根据参数来获取的,所以,我们对这里进行改造。因为在前面的进程中,我们有传递,所以我们可以直接获取即可。

代码语言:javascript
复制
is_first_install = False
# 1.判断是否安装app
is_install = isinstallapk(self.parme['appPackage'], self.parme['deviceName'])
if is_install is False:
    # 2.如果没有安装,则安装
    installapk(apk_path, self.parme['deviceName'])
    is_first_install = True
desired_caps = {
    'platformName': 'Android',
    'deviceName': self.parme['deviceName'],  # adb  deivces
    'platformVersion': self.parme['platformVersion'],  # 从设置中可以获取
    'appPackage': self.parme['appPackage'],  # 包名
    'appActivity': self.parme['appActivity'],  # apk的launcherActivity
    # 'skipServerInstallation': True
}
self.driver = webdriver.Remote('http://0.0.0.0:%s/wd/hub'%str(self.parme['port']), desired_caps)
sleep(10)

改造完毕之后运行,还是发现了问题,还是无法启动,那么是哪里出来了问题,我们去打印appium的日志。

代码语言:javascript
复制
    for i in range(0, len(port_list)):
        cmd = "appium  -p %s  --log /Users/**/Desktop/testplan/newon/log/%s.log " % (
            port_list[i],port_list[i])

我们去改写了启动appium服务的脚本,打印了对应的日志。

看了下日志,两个日志的选择的设备都是同一个,那么我们应该如何改写呢,其实很简单。

在desired_caps没有配置uid,所以配置下uid

代码语言:javascript
复制
desired_caps = {
    'platformName': 'Android',
    'deviceName': self.parme['deviceName'],  # adb  deivces
    'platformVersion': self.parme['platformVersion'],  # 从设置中可以获取
    'appPackage': self.parme['appPackage'],  # 包名
    'udid':self.parme['deviceName'],
    'appActivity': self.parme['appActivity'],  # apk的launcherActivity
    # 'skipServerInstallation': True
}

然后我们再次去启动测试,

这样我们就可以启动app,链接本地的测试设备进行测试了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档