IOS自动化测试
Appium 在 iOS 下工具的變革
- iOS 9 之前一直以 instruments 下的 UIAutomation 為驅動底層技術(弊端由于 instruments 的限制,單臺 mac 只能對應單臺設備);
- iOS 9.3 時代推出 XCUITest 工具,用以替代 UIAutomation;
- iOS 10 時代蘋果直接廢棄了 UIAutomation、Facebook 推出 WebDriverAgent(實現的 server 能夠支持單臺 mac 對應多個設備);
- Appium 在 iOS 9.3 后全面采用 WebDriverAgent 的方案。
從圖中可以看出:
- Client 端是 Appium 之前本身提供的;
- Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整個集成進來,Instruments 是為了支持 iOS 9.3 之前的系統)
- 最右邊是一個手機
- 之前 Server 是和 bootstrap.jar 通信,這里 WebDriverAgent 提供了 WebDriverAgentRunner(類似 bootstrap.jar 的功能),WebDriverAgent 與之通信;
- WebDriverAgentRunner 是一個應用,Client 和 server 運行了之后,WebDriverAgentRunner 會被裝到手機上,這個應用會接收來自 Server 的指令,并連接底層的 XCTest.framwork,并告訴 XCTest.framwork 操作手機進行自動化。
1.2.3 必裝的軟件
Xcode、command line tool、libimobiledevice、ios-deploy、carthage、WebDriverAgent、Appium。
其常用命令如下:
-
查看當前所連接的設備
idevice_id -l # 顯示當前所連接設備的 udid
instruments -s devices # 列出所有設備,包括真機、模擬器、mac -
安裝應用
ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 為應用在本地的路徑
-
卸載應用
ideviceinstaller -u [udid] -U [bundleId]
-
查看設備已安裝的應用
ideviceinstaller -u [udid] -l # 查看設備安裝的第三方應用
ideviceinstaller -u [udid] -l -o list_user # 同上,查看設備安裝的第三方應用
ideviceinstaller -u [udid] -l -o list_system # 查看設備安裝的系統應用
ideviceinstaller -u [udid] -l -o list_all # 查看設備安裝的所有應用 -
獲取設備信息
ideviceinfo -u [udid] # 獲取設備信息
ideviceinfo -u [udid] -k DeviceName # 獲取設備名稱 同命令 idevicename
idevicename # 同上
ideviceinfo -u [udid] -k ProductVersion # 獲取設備版本 10.3.3
ideviceinfo -u [udid] -k ProductType # 獲取設備類型 iPhone 8,1
ideviceinfo -u [udid] -k ProductName # 獲取設備系統名稱 -
其他系統文件信息
ideviceinfo # 獲取設備所有信息
idevicesyslog # 獲取設備日志
idevicecrashreport -e test # 獲取設備 crashlog,test 是文件夾需新建
idevicediagnostics # 管理設備狀態 - 重啟、關機、睡眠等
ios-deploy 常用命令
ios-deploy -c # 查看當前鏈接的設備
ios-deploy --[xxx.app] # 安裝 APP
ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 卸載應用
ios-deploy --id [udid] --list_bundle_id # 查看所有應用
ios-deploy --id [udid] --exists --bundle_id # 查看應用是否安裝
carthage,項目依賴管理,主要是 WebDriverAgent 使用,WebDriverAgent 是用它做項目依賴的;
公司 iOS 項目也使用 carthage,類似于 java 的 maven;
ios-deploy、ideviceinstaller 類似 android 的 adb;
authroize-ios,iOS 授權工具,主要用于模擬器中一些權限的授權;
npm install -g authroze-ios sudo authroze-ios?
1.2.5.2 準備腳本
- iOS 項目的 Desired_caps
- iOS 的元素定位
- Appium Desktop - Inspect (推薦)
- WebDriverAgent - Inspector
這里說說 Appium Desktop - Inspect 是怎么使用的。
- 打開并啟動 Appium Desktop,點擊軟件右上角第一個按鈕 “ start inspector session”;
- 會出現彈窗,彈窗里配置好 Desired_caps。
- 定位方式推薦:AccessbilityId
總結
- 上一篇: linux-CentOS7.6操作系统安
- 下一篇: 显示器接口_显示器接口都有哪些?