IOS 自動化,幾種特殊情況下 UI 元素獲取的方式
最近做 IOS 自動化,總結幾種 UI 元素查詢方式(同時做個記錄),參考各種資料,按查詢元素的順序速度,從快到慢的順序如下:ios_predicate >> accessibility_id >> class_name >>xpath,因此首選 ios_predicate 。
1、核取方塊如何判斷是否勾選
IOS,核取方塊勾選和未勾選狀態下,核取方塊的 value 值是不同的,核取方塊勾選時 value == '1',未勾選時 value 值不存在,因此可以增加判斷條件,來判斷是否勾選,例如登入頁 - 記住密碼核取方塊,可以用如下語句進行判斷:
if self.is_element_present(MobileBy.IOS_PREDICATE, "type == 'XCUIElementTypeButton' AND value == '1' AND label == '記住密碼'") == 'False':
判斷條件不成立時,即為:未勾選記住密碼
if self.is_element_present(MobileBy.IOS_PREDICATE, "type == 'XCUIElementTypeButton' AND value == '1' AND label == '記住密碼'") == 'True':
判斷條件成立時,即為:已勾選記住密碼
2、元素文字內容較長時,可用 CONTAINS 條件判斷,例如:彈框中提示語比較長時,且包含不確定文字內容時,可以提取確定文字內容進行判斷,示例如下:
if self.is_element_present(MobileBy.XPATH,
'//[@label="溫馨提示"]') == "True" and self.is_element_present(
MobileBy.XPATH,
f'//[@label="檢測到目標資料夾下已經存在相同名稱 [{file_name}] 的資料夾, 確定要繼續匯入嗎?"]') == "True":
file_name 屬於不確定內容,可以改為:
if self.is_element_present(MobileBy.XPATH,
'//[@label="溫馨提示"]') == "True" and self.is_element_present(MobileBy.IOS_PREDICATE, "type == 'XCUIElementTypeStaticText' AND value CONTAINS '檢測到目標資料夾下已經存在相同名稱'") == "True":
這種寫法的好處是,無論檔名稱如何變化,都不影響結果判斷。
3、Android 中可以用 len(列表) 長度進行判斷,IOS 判斷一個列表為空,無法使用 len(列表) 長度進行判斷,但可以使用:是否存在 label="空列表來判斷:
示例如下:
if self.is_element_present(MobileBy.XPATH, '//[@label="空列表"]') == 'True':
相關文章
- JS獲取元素寬高的兩種情況JS
- 獲取或操作DOM元素特性的幾種方式
- Spring - 獲取ApplicationContext的幾種方式SpringAPPContext
- eclipse 專案gradle無反應的幾種特殊情況EclipseGradle
- PG獲取檔案大小的幾種方式
- [css佈局1]不知寬高情況下,水平垂直居中的幾種方式CSS
- Android自動化-如何獲取檢視元素屬性?Android
- Spring在程式碼中獲取bean的幾種方式SpringBean
- appium 自動化測試,無法獲取具體元素APP
- 獲取Java執行緒返回值的幾種方式Java執行緒
- 請在這幾種情況下匯入TPM管理
- Appium自動化(10) - appium高階元素定位方式之 UI Automator API 的詳解APPUIAPI
- DOM對映的特殊情況
- APPIUM-Android自動化元素定位方式APPAndroid
- js中this指向有幾種情況JS
- ubuntu20.04禁止自動休眠的幾種方式Ubuntu
- UI 自動化元素定位規範問題UI
- UI自動化測試-web元素選擇UIWeb
- [python][selenium][web自動化]webdriver的元素定位方式PythonWeb
- js獲取數字陣列最大值的幾種方式JS陣列
- 使用快取(Cache)的幾種方式,回顧一下~~~快取
- 沒有介面文件的情況下如何開展介面自動化測試?
- js中bool值為false的幾種情況JSFalse
- 3種方式自動化控制APPAPP
- php讀取檔案的幾種方式PHP
- 父元素寬度為flex-1 的情況下,如何將子元素橫向滾動Flex
- DBMS_BACKUP_RESTORE用於特殊情況下的恢復(轉)REST
- iOS開發-獲取rootViewController的正確方式iOSViewController
- 簡單介紹MySQL索引失效的幾種情況MySql索引
- 微信token驗證失敗的幾種情況
- sql最佳化的幾種方式SQL
- iOS appium UI 自動化測試配置可控 xpathiOSAPPUI
- 如何這沒有顯示器的情況下獲取樹莓派IP?樹莓派
- SpringBoot讀取配置資料的幾種方式Spring Boot
- ubuntu下圖形程式自啟動的幾種方法Ubuntu
- Java程式異常處理的特殊情況Java
- android獲取控制元件的幾種方法Android控制元件
- 大資料量獲取TopK的幾種方案大資料TopK