關於airtest羣控制ios

1.安裝carthage

brew install carthage 

2.下載項目

git clone https://github.com/facebookarchive/WebDriverAgent
./Scripts/bootstrap.sh 

#如果報錯多半是node 版本的問題降版本https://registry.npmmirror.com/binary.html?path=node/v12.22.1/

2.構建時候報錯統計

1.錯誤1

報錯信息:Building for iOS, but the linked and embedded framework 'RoutingHTTPServer.framework' was built for iOS + iOS Simulator

解決辦法:

在 targets 下的類別中,依次將 Build Settings 裏的 Validate Workspace 修改爲 Yes

2.報錯2

報錯信息:/WebDriverAgent/Carthage/Build/iOS/RoutingHTTPServer.framework/Headers/RouteResponse.h:2:9: Double-quoted include "HTTPResponse.h" in framework header, expected angle-bracketed instead

解決辦法:

在 project 的 Build Settings 信息中,將 Quoted Include In Framework Header 修改爲 false

3.報錯3

WebDriverAgent-master/Carthage/Build/iOS/RoutingHTTPServer.framework/Headers/RouteResponse.h:8:1: 'assign' property of object type may become a dangling reference; consider using 'unsafe_unretained'

解決方式:將 assign 改爲 strong ,並重新build,如下的兩個錯誤同步解決掉(或:修改assign爲unsafe_unretained)

4.報錯4

sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.

解決辦法:在 project 的 Build Settings 信息中,將require only app-extension-safe api 修改爲 false

5.報錯5

WebDriverAgent-master/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m:29:1: Implementing deprecated method

解決方法:將recordFailureWithDescription修改爲recordIssue

3.用xcode將/WebDriverAgent在手機中成功運行一次

4.使用tidevice離線啓動WebDriverAgent

1.安裝

pip3 install tidevice 

2.相關指令

tidevice list #查看已連接設備
tidevice applist #查看設備上的第三方應用包名
tidevice -u $UDID #指定設備
tidevice xctest -B app報名   #運行app

3.注意事項

多臺設備時間

tidevice -u 13bddfbf8c68b7018c2424fb6653e88cb0c32412 xctest -Bcom.facebook.WebDriverAgentRunnerwwww.xctrunner
#這臺通過WebDriverAgent項目中全局8100改成8101
iproxy 8101 8101 -u 13bddfbf8c68b7018c2424fb6653e88cb0c32412  #必須加u

tidevice -u a5cf1c66d6f78f3fb711b9604a7187bc6c391210 xctest -B com.y.w.y.xctrunner
iproxy 8100 8100 -u a5cf1c66d6f78f3fb711b9604a7187bc6c391210  

4.airtest羣控代碼

1.安裝

pip3 install airtest
pip3 install poco
pip3 install poco-ui

2.羣控代碼

import random
import time

from airtest.core.api import *
from airtest.cli.parser import cli_setup
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
from poco.drivers.ios import iosPoco
from multiprocessing import Process



kuaituantuan_code_table = yunji_db['kuaituantuan_code']

def get_ios_poco(index):
    print(index)
    for index_int in range(index+1):
        print(index_int)
        connect_device(f"iOS:///http://127.0.0.1:810{index_int}")
    set_current(index)  #本質G.DEVICE_LIST 羣控核心用好G這個對象
    dev = device()
    poco = iosPoco(device= dev)
    return poco,dev

  
def Initialization(index):
    poco,dev =get_ios_poco(index)
    keyevent("Home")
    
    
if __name__ == '__main__':
    process_1 = Process(target=Initialization, args=(0,))
    process_2 = Process(target=Initialization, args=(1,))
    process_1.start()
    process_2.start()
    process_1.join()
    process_2.join()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章