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用來存放要循環安裝遍歷的安裝包們:

 

執行完畢後打印的消息如下:

 

下面來看我的代碼:

# 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章