2016-05-25 60 views
0

任何類似的getText()我使用XCUITest做使用的Xcode 7.3AppleTV的 UI測試。是否有WebElement爲XCUIElement

它有XCUIElement就像WebElement一樣。但是有沒有類似的getText()方法爲XCUIElement,它出現在Selenium WebElement

基本上我想從XCUIElement中捕獲文本。

E.g:

let ele:XCUIElement = XCUIApplication().collectionViews.cells[ 
               "Sign In to Activate"]. 

所以反正是有得到的值:「登錄激活」 從元素。任何幫助?

回答

1

通過UI測試,您可能需要以不同的方式考慮您的問題。代替嘗試讀取已知元素的值,請檢查元素是否存在於所有處。

實際上,這意味着要檢查您的網絡視圖中是否出現了期望值的標籤。所以,如果你正在等待「登錄激活」標籤,以顯示您可以通過以下斷言它:通過links

let app = XCUIApplication() 
let signInLabel = app.staticTexts["Sign In to Activate"] 
XCTAssert(signInLabel.exists) 

或者,如果元素實際上是一個鏈接,訪問它,就像這樣:

let signInLink = app.links["Sign In to Activate"] 
XCTAssert(signInLink.exists) 
2

一旦你有一個靜態文本XCUIElement,您可以使用label屬性獲取文本。

let app = XCUIApplication() 
let textElement = app.staticTexts["myLabelIdentifier"] 
let text = textElement.label 

由於單元格不是靜態文本(UILabel)對象,您無法獲取單元格的文本。如果你的單元格包含一個UILabel(文本),那麼你需要先找到該對象。

您可以通過執行app.staticTexts獲得屏幕上的所有文本元素 - 然後您需要將文本元素列表縮小到您感興趣的文本元素列表。爲此,請將accessibilityIdentifier添加到UILabel在你的應用代碼中。

label.accessibilityIdentifier = "myLabelIdentifier" // This can be whatever String you like 

如果您有多個單元在您的標籤被重用的位置,那麼您還需要能夠識別出您感興趣的單元格。例如,如果要查找第三個單元格內的文本元素:

let app = XCUIApplication() 
let cell = app.cells.elementBoundByIndex(2) 
let textElement = cell.staticTexts["myLabelIdentifier"] 
let text = textElement.label