WebDriverAgent xcode16 打包的 app 自動化真多坑(問題篇)
背景
基於 airtest 維護的 wda 執行的 ios 自動化 iOS-Tagent 地址
import wda #程式碼執行的驅動,需要pip install python-wda
問題的出現
ios 的打包環境的 xcode 升級到 xcode16 之後,ios 自動化全軍覆沒
直觀的問題
- 原生 exists、click_exists 方法出現混亂,原先不存在的元素,現在變成存在,如影片全屏時的按鈕,點選螢幕後按鈕隱藏了,但是檢視元素會變成存在,且元素在螢幕外
- 1、開發無果、文件未見 ,準備修改之前自行封裝的 exists、click_exists 方法
- 2、初步判斷為 xcode16 導致"不可見的也可能變成存在"
if element.exists:
if element.visible:
修改後大部分 exists 準確,然後出現新問題:"部分元素在舊版 xcode 打包出來的,visible 是 True,新版是的 False"
執行後決定自由選擇 exists 的時候是否需要判斷 visible
#text/label的都不傳find_by_str,指向label
#1、 self.exe_exists("""主動防禦設定,警報聲設定""") 只校驗存在,不管visible
#2、 self.exe_exists("""警報聲設定""") ,強校驗,必須visible==True
#3、 self.exe_exists("""//*[@label="警報聲設定"] ""","""self.driver.xpath('//*[@label="警報聲設定"]') """),str_value可以隨意傳. 強校驗,必須visible==True
def exe_exists(self, str_value, find_by_str='label'):
#僅核心程式碼
str_value = str_value
list1 = []
list2 = []
if find_by_str == 'label':
list = str_value.split(',')
# 檢查list[0]是否是整數
if list and list[0].isdigit():#如果是 1,hello,word ,逗號第一位是數字,後面的hello,word就是一個整體,實際判斷“hello,word”
# 合併list[1:]為一個字串
merged = ','.join(list[1:])
list=[]
list[0] = merged
for i in list:
if self.driver(label=i).exists:
if len(list) == 1: # 只有一個資料時,按嚴格判斷存在,直接失敗
if self.driver(label=i).visible:
list1.append(i)
else:
self.add_screenshot_strs(f"visible false{i}")
list2.append(i) # 加到錯誤列表中
else:
list1.append(i) # 多條資料時不嚴格,存在就可以
else:#完全不存在
self.add_screenshot_strs(f"完全不存在{i}")
list2.append(i) # 加到錯誤列表中
else:
element = eval(find_by_str)#這裡的find_by_str是我封裝過的,實際上是個字串,如 "driver(text="裝置設定")"
if element.exists:
if element.visible:
if len(list2) > 0:
self.add_screenshot_strs(f"不存在值self.exe_exists(" + ','.join(list2))
- click_exists 可以過分一點必須 visible==True
def click_exists_screenshot(self, find_by_str, api_value):
self.add_screenshot_strs(f"click_exists_screenshot({find_by_str},{api_value})")
element = eval(find_by_str)
if element.exists:
if element.visible == True:
self.screenshot()
# self.click_screenshot(find_by_str, api_value)#直接去點選 或者直接用下面的原生方法
element.click_exists()
多次通訊導致速度降低
#原先
if self.driver(label=i).exists:
if self.driver(label=i).visible:
#提速
if self.driver(label=i,visible=True).exists:#存在且顯示
執行過程中發現可能 提速後的結果可能不正確,下面 2 種方式,方式 2 得到的 exists 為 False。對比 Xcode15 的 app 版本,確定是 Xcode16 引起的
# 方式1
if self.driver(label="更多日期").exists: #元素審查器看到的值
if self.driver(label="更多日期").visible:
print("存在")
# 方式2
if driver(label='更多日期',visible=True).exists:
print("存在")
繼續補救
for i in list:
if self.driver(label=i,visible=True).exists: #優先用提速的方式,提速失敗後,再執行一次未提速的方法
list1.append(i)
else:
if self.driver(label=i).exists:
if len(list) == 1: # 只有一個資料時,按嚴格判斷存在,直接失敗
if self.driver(label=i).visible:
list1.append(i)
else:
self.add_screenshot_strs(f"visible false{i}")
list2.append(i) # 加到錯誤列表中
else:
list1.append(i) # 多條資料時不嚴格,存在就可以
else:#完全不存在
self.add_screenshot_strs(f"完全不存在{i}")
list2.append(i) # 加到錯誤列表中
有其他避坑方式請留言
有其他坑 請留言
相關文章
- 有償線上求答案,ios-ui 自動化 webdriveragent 問題 2 個iOSUIWeb
- iOS自動化打包部署踩坑記iOS
- ios 自動化,尋求 WebDriverAgent 優化方案iOSWeb優化
- Xcode指令碼自動化打包問題:xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATHXCode指令碼ErrorPackageAPPDeveloper
- 裝oracle 10g的RAC問題真多。。。。。Oracle 10g
- android appium微信等自動化的那些坑兒AndroidAPP
- 自動化打包那些事
- Python的iOS自動化打包PythoniOS
- robotframework + appium進行自動化測試時遇到的問題FrameworkAPP
- 介面自動化報告的問題
- APP打包上線應注意的問題!APP
- iOS自動化編譯打包iOS編譯
- iOS自動化打包(fastlane使用)iOSAST
- Android程式自動化打包Android
- app 自動化 (真機)+jenkins 進行執行問題APPJenkins
- WebDriverAgent重簽名爬坑記Web
- Appium 做 flutter 自動化測試實踐&採坑APPFlutter
- beego API自動化文件問題GoAPI
- iOS如何實現自動化打包iOS
- 安卓自動化打包環境搭建安卓
- 使用 fastlane 實現自動化打包AST
- 陷入jenkins自動化部署的坑Jenkins
- Jenkins整合appium自動化測試(Windows篇)JenkinsAPPWindows
- appium自動化APP
- appium 能打包成 apk,啟動這個 apk 就能調起待測 app 自動化麼APPAPK
- appium 進行 ios 自動化測試,報無法啟動 WebDriverAgent 會話錯誤,跪求大佬們幫忙看看~APPiOSWeb會話
- 【pytest 介面自動化】token 問題
- 【Android自動化打包】01. aapt的用法AndroidAPT
- 【Android自動化打包】02. javac的用法AndroidJava
- 關於vue的webpack打包優化問題VueWeb優化
- fastlane 自動化打包工具實踐AST
- jenkins iOS自動化打包分發JenkinsiOS
- 實現Xcode 9自動化打包XCode
- 使用Automator自動化iOS打包流程iOS
- 避坑指南:Golang框架自動化測試中的常見問題與解決方案大全Golang框架
- 【填坑指南】webpack圖片路徑與打包問題Web
- UI 自動化元素定位規範問題UI
- 一個 UI 自動化問題諮詢UI