2015-10-23 230 views
2

如果我正在嘗試編寫不依賴於標籤或其他特定於值的元素的通用測試,我如何獲取該信息?就像我要點擊桌面單元並稍後需要一些信息。喜歡識別哪個單元被點擊。我如何使用XCUIElement從中獲取標籤?從XCUIElement中提取信息

回答

1

您可以從XCUIElement中提取的信息僅限於XCUIElementAttributes protocol中的信息。其中最值得注意的是identifier,valuetitle

您可以在生產代碼中通過-accessibilityIdentifier設置identifiervalue屬性可以從幾個不同的路徑設置,但它通常是控件的活動狀態。例如,選取器的選定元素。

您可以嘗試使用輔助功能檢查器查看元素上已設置的內容,然後使用查詢來查找該元素。

+1

由於某種原因,我永遠無法獲得實際的價值。我一直在嘗試這樣的事情: app.tables.elementBoundByIndex(0).cells.elementBoundByIndex(3).staticTexts。elementBoundByIndex(1) 永遠不會得到實際的價值。我一直得到: 可選() 並將其解包爲一個字符串給我一個空字符串 – ajc6432

+0

原來我最終沒有爲UI層次結構正確鏈接XCUIElementQueries。順便說一句,你的網站真的很有幫助。感謝您運行它。在此之前,我一直堅持這一點。 – ajc6432

0

喬一直在正確的答案,但他忽略瞭如何實際得到他指定的屬性的值。

讓我們假設我想那會打印我的應用程序的導航欄的字符串

enter image description here

我所做的就是我創建了一個XCUIElement我的導航欄:

XCUIApplication *app = [[XCUIApplication alloc] init]; 
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0]; 

然後我在創建navBarTitle對象後放置一個斷點,並使用調試控制檯打印出navBarTitle對象的詳細信息:

print out

您在打印看出來調試控制檯中的有一個名爲標識一個關鍵

爲了提取從該對象該字符串,我使用以下方法創建一個NSString對象:

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"]; 

我用XCUIElement navBarTitle,然後用於該方法valueForKey。 valueForKey提取密鑰標識符的字符串值。

您可以瞭解這種方法在這裏讀了起來: NSKeyValueCoding

valueForKey的關鍵是解開這個問題的答案....雙關語意:)

0

您可以提取一些國家,例如, accessibilityIdentifier,isHitable,value或其他,但不幸的是,你不能設置/更改任何這些。所以顯然你無法檢測到XCUIElement是否已被竊聽。這在UI測試中是一個很大的限制。