測試開發:推薦一款阿里最新 Python 自動化開源工具!


大家好,我是麥小米,是狂師老師全棧測開訓練營中的一名學員。

如果之前做過iOS自動化的同學相信都知道,一直以來,iOS自動化的實現&執行都必須依賴 Mac 系統,其主要原因是因為需要通過 xcodebuild 編譯&安裝WDA (WebDriverAgent)iOS 設備中,通過WDA實現對被測應用進行操作。導致想要做iOS自動化 就必須擁有 Mac 設備的現象。

作為一名測開新手,在學習完移動端自動化測試后,興致滿滿要實踐一番,無奈公司只配備了windows電腦,怎樣進行iOS自動化測試成了一大難題,而今天給大家分享一款新面市不久的iOS自動化工具:tidevice ,正好是彌補了這塊空缺。

一、tidevice介紹

tidevice 是阿里內部小組前不久,剛開源的一款針對用來做iOS自動化測試用途的工具,可用於iOS應用的性能采集和UI自動化。不依賴Xcodebuild,可以運行在 MacLinuxWindows 上,即使你沒有Mac電腦,也能跑iOS自動化

一句話概況:tidevice它是一款跨平台的自動化開源工具,不依賴 Xcode 就可以啟動 WebDriverAgent( WDA ),這也就意味着以后在Windows 可以直接運行 iOS 自動化腳本了。

項目地址:

https://github.com/alibaba/taobao-iphone-device

二、tidevice能些什么?

從上述的介紹中,可以知道tidevice定位就是一款iOS自動化測試工具,主要用途有:

  • iOS UI自動化測試
  • 設備信息獲取
  • 應用安裝、卸載、啟動、停止、查看應用信息、已安裝應用列表
  • 啟動 WebDriverAgent (不依賴 xcodebuild , 跨平台)
  • 性能數據采集
  • 設備截圖、設備日志等

三、 tidevice自動化環境准備

1.安裝tidevice(依賴Python3.6+)

pip3 install -U "tidevice[openssl]" (推薦)
pip3 install -U tidevice (缺少設備配對功能)

2.查看是否安裝成功

tidevice -v

3.在設備上安裝WebDriverAgent

除了上述兩步,要完成 iOS 端的自動化,我們還需要做一些准備工作

  • 3.1 . 下載WebDriverAgent,將 WebDriverAgent 安裝到 iOS 設備上,通過它驅動手機進行一系列自動化操作,由於 Facebook WDA 很長時間沒有更新了,這里建議直接使用 Appium WDA
https://github.com/appium/WebDriverAgent
  • 3.2. 切換到WebDriverAgent目錄下,執行./Scripts/bootstrap.sh

  • 3.3. 依賴安裝完成后,雙擊WebDriverAgent目錄下的WebDriverAgent.xcodeproj在Xcode中打開

  • 3.4. WebDriverAgent的Bundle Identifier更改為自己命名的Identifier

  • 3.5. WebDriverAgentLib的Bundle Identifier更改為自己命名的Identifier

  • 3.6. WebDriverAgentRunner的Bundle Identifier更改為自己命名的Identifier

  • 3.7. 連接手機,點擊Bulid

  • 3.8. 提示Build Succeeded表示成功,點擊Product-->Test

  • 3.9. 提示Succeeded后打開手機-通用-設備管理-點擊信任即可。

四、tidevice常用功能

准備好上述環境后,將 iPhone 設備連接到電腦上,就可以使用 tidevice 提供的功能了

1. 查看已連接設備列表

tidevice list
# json數據顯示
tidevice list --json

由於tidevice 支持的所有cmd命令 都是在 tidevice.main 中定義實現,可以直接與自己的工程代碼集成在一起。

Python代碼:

from tidevice import Usbmux
print(Usbmux().device_list())

利用tidevice info可以查看設備信息,比如:設備序列號、系統版本、CPU、本機號碼、時間戳、藍牙地址、MAC 地址等信息

2. 查看手機上安裝的應用

tidevice applist

Python代碼:

from tidevice import Device
Instruments = Device("udid").connect_instruments()
# 設備上全部App信息列表 包含 系統應用和插件,通過 Type 可以區分App
apps = instruments.app_list() 
# 只篩選用戶安裝的App列表
user_app_list = [app for app in apps if app["Type"] == "User"] 

3. 安裝、卸載應用
tidevice 支持安裝本地 ipa 包和遠程包,另外,tidevice 可以使用「 --udid 」參數將應用安裝到某一台設備中

# 安裝本地應用
tidevice install test.ipa

# 根據udid參數,指定設備安裝應用
tidevice --udid $UDID install https://xxx.org/mikezhou.ipa

# 卸載應用(通過包名)
# 比如:微信App包名為:com.tencent.xin 
tidevice uninstall com.tencent.xin 

Python代碼:

from tidevice import Device
Device("udid").app_install(ipa_url_or_path)

4. 獲取設備信息

tidevice info

Python代碼:

from tidevice import Device
# 內容會比cmd 全很多, 但是需要理解每個字段的含義
Device("udid").device_info()

查看設備電源信息

tidevice info --domain com.apple.mobile.battery --json

可以執行 ideviceinfo -h 查看都有哪些domain

5. fps 數據采集

tidevice dumpsfps

四.執行自動化測試

在執行iOS自動化測試之前,首先要提前將 WDA 安裝到 iOS設備中 並在設置中信任開發者,確保WDA可以正常啟動,並且知道bundleId

1、啟動WDA

真機設備安裝完 WDA 后,就可以脫離 Mac,使用 Windows 進行自動化操作了

tidevice -u(設備 udid)wdaproxy -B(wda 的 bundleId) --port 8100
# 只連接了一台手機,例如:
tidevice wdaproxy -B com.facebook.WebDriverAgent1.xctrunner --port 8100

當看到以下信息表示啟動成功

此時可以訪問http://127.0.0.1:8100/status

2.weditor安裝查看元素工具

# weditor安裝
pip3 install -U weditor
# weditor啟動
控制台輸入weditor或者python3 -m weditor

3.查看元素

  • Windows: cmd-->ipconfig-->獲取本機ip,系統選擇iOS,輸入http://本機ip:8100,點擊Connect

  • Mac電腦:系統選擇iOS, 輸入http://localhost:8100,點擊Connect

  1. 接下來,就可以使用 Appium 或 facebook-wda 編寫腳本並運行到 iOS 設備上了,首先,我們安裝對應的依賴,比如安裝facebook-wda依賴
pip3 install -U facebook-wda

接着,以酷狗App為例,編寫自動化腳本並運行測試,代碼如下:

# -*- coding:utf-8 -*-
import wda
import allure

d = wda.USBClient()

class TestDemo:
    def setup(self):
        d.session('com.kugou.kugou1002')

    def test_loginDemo(self):
        with allure.step('點擊我的'):
            d(label='我的').click_exists(10)
        with allure.step('點擊登錄'):
            d.xpath('//*[@label="空列表"]/Other[1]/Button[1]/StaticText[3]').click_exists(10)
        with allure.step('點擊其他登錄方式'):
            d(label="其他登錄方式").click_exists(10)
        with allure.step('輸入賬號'):
            d.xpath('//*[@label="帳號"]/following-sibling::*[1]').get(10).set_text('17622222333')
        with allure.step('輸入密碼'):
            d.xpath('//*[@label="密碼"]/following-sibling::*[1]').get(10).set_text('000000')
        with allure.step('點擊登錄'):
            d.xpath('//*[@label="密碼"]/parent::*/parent::*/following-sibling::*[2]').click_exists(10)
        assert d(label="請先勾選頁面下方的“同意《用戶協議》和《隱私政策》”").wait(10) != None

    def teardown(self):
        d.app_stop('com.kugou.kugou1002')

五. 最后

阿里開源的tidevice這款工具,占用內存小,且支持跨平台,使iOS自動化擺脫了Mac的限制,也給iOS自動化方案建設更多的可能性,但由於剛開源不久,可能還存在一些不穩定的因素,但這並阻止不了大家嘗鮮的腳步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM