appium+python的一个简单应用:渠道包测试(遍历安装包,安装->启动->截图->卸载->再次安装)

需求:app发版时,需要发布60多个渠道包,为保证渠道包质量,我们单位的工作流程里包含一个抽测的环节,对即将发布的几十个渠道包随机抽取10个左右进行随机测试,主要看看安装,打开是否正常,这很耗费人力。为解放双手,写了一个可以应用的自动安装脚本,以后就用它了。

ps:这是我学习过程的一个尝试,欢迎讨论指正。

 

实现方式:appium+python(最近正好在看这一块),环境搭建网上一搜一大堆。

 

思路:

1、将apk们存放在本地;

2、获取apk们的名字,存放到列表中;

3、循环读取apk们的路径,将apk们安装到手机中,并打开,截图,卸载,再进行下一个app的安装,直到全部安装完毕;

 

涉及知识点:

1、python获取某一目录下的所有文件名称,这里用来获取某一文件夹下的所有apk的名称,后边用来循环遍历:os.listdir(path)

2、appium中将本地包安装到手机中 driver.install_app(path)

3、安装包后打开安装包:driver.install_app(path) 之后,使用driver.start_activity(包名,activity)启动。注意这里使用driver.launch_app()不行,启动不了。我也不知道为啥,有人知道吗?

4、截图 driver.get_screenshot_as_file(),以安装包名+首页+.png命名,这样就能区分开各个不同安装包的页面

5、卸载app:driver.remove_app(packagename)

 

扩展:这里其实还可以多做一些扩展,比如安装包之后,启动做一些点击操作,这个我后续扩展

遗留问题:安装apk时会有权限弹窗弹出询问是否允许安装,这个问题暂时还没有解决。

 

我的目录结构如下图,images用来存放各个安装包的截图,packages用来存放要循环安装遍历的安装包们:

appium+python的一个简单应用:渠道包测试(遍历安装包,安装->启动->截图->卸载->再次安装)_第1张图片

 

执行完毕后打印的消息如下:

appium+python的一个简单应用:渠道包测试(遍历安装包,安装->启动->截图->卸载->再次安装)_第2张图片

 

下面来看我的代码:

# coding=utf-8
from appium import webdriver
import os
import time

#设置存放安装包的路径
packages = os.listdir(os.getcwd() + "\\packages")

#设置存放图片的路径
image_path = os.getcwd() + "\\images\\"

 #初始化测试平台
desired_caps = {
                'platformName': 'Android',
                'deviceName': '868e033d',
                # 'deviceName': 'LE67A06230436549',
                'platformVersion': '9',
                'app': "C:\\Users\\shimei\\Desktop\\tiebaobei_channel_aiqiyi_release.apk",
                # apk包名
                #  'appPackage': 'com.cehome.tiebaobei',
                # # apk的launcherActivity
                # 'appActivity': 'com.cehome.tiebaobei.activity.MainEntranceActivity'
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(20)
driver.remove_app("com.cehome.tiebaobei")


#循环读取packages中的数据,将每个安装包安装至设备中,并打开、截图、卸载
for pag in packages:
    try:
        #循环获取到安装包的位置
        apk_path = os.getcwd() + "\\packages\\" + pag
        driver.install_app(apk_path)
        driver.start_activity("com.cehome.tiebaobei","com.cehome.tiebaobei.activity.MainEntranceActivity")
        # driver.launch_app()
        time.sleep(20)
        driver.get_screenshot_as_file(image_path+ pag + "首页.png")

        #卸载二手机app
        driver.remove_app("com.cehome.tiebaobei")
    except Exception as e:
        print("============报错================")
        print("%s安装包出错" %pag)
        print("具体错误信息:%s" %format(e))
    else:
        print("%s包测试完毕!" %pag)

你可能感兴趣的:(测试笔记)