WDA 支援 iOS 17 自動化改造

water發表於2024-11-15

最近抽空搞好了 iOS17 的自動化,在這裡分享下經驗吧。我的專案是基於 WDA 改造的,啟動用的是 tidevice。
1,tidevice 無法啟動 iOS17 以上的 WDA,因此重新用回了 xcodebuild 命令啟動,也能正常使用。最近開帖子有了個 tidevice3 好像是可以直接支援 iOS17 的,以後抽時間再弄。
2,iOS 17 獲取 element 屬性稍微有點變化,原來用的 wdValue、wdLable 這些欄位都沒了,需要自己改造處理一下,用 label 或 ID 欄位來替代。
3,iOS 17 的 element 屬性空值也有變化,空值需要自己轉換成 nil 才能跟原來相容。
4,最頭疼的問題,iOS17 呼叫底層獲取的 XCUIElement、Snapshot 等類返回之後,自定義的一些 category 分類就不生效了,應該是 iOS17 返回的時候底層把物件型別改了,導致跑自動化的時候很多 unrecognized selector...的錯誤。這個問題有 3 個解決思路:
1)具體除錯列印,看物件型別什麼時候唄修改的,這個需要大量時間,需要對 objectC 特別熟悉,修復底層程式碼應該可以徹底解決這個問題,本人是沒有那個能力和時間了,除錯了 2 天解決不了換其它方式了。
2)重新新建一個物件,新建的物件型別是沒問題的,把 XC 底層返回的 element 之類的物件的值複製給新的物件,就可以正常跑了。
3)category 報錯,我們就不用它,把我們在 category 上的函式提取到外面其它工具類裡面去,算是繞開了這個問題,我當前使用的就是這個方式。

就寫這些吧。

相關文章