這是使用Xcode 7.2.1和Swift 2.0。Xcode UITesting:標籤從層次結構中消失,不會回來
我有一個表單元格,其中包含用於顯示錯誤消息的UILabel
。因此,在最初的負載是使用這樣的代碼空白:
cell.errorLabel.alpha = 0.0
cell.errorLabel.text = nil
再後來當我發現一個錯誤的我要顯示我這樣做:
cell.label.text = "to"
cell.errorLabel.alpha = 1.0
cell.errorLabel.text = "Error !!!!"
這在運行時正常工作應用程序。但是,在UI測試中運行時,我嘗試測試顯示錯誤是這樣的:
let toCell = XCUIApplication().tables.... // Finds the cell with label 'to'
XCTAssertTrue(toCell.staticTexts["Error !!!!"].exists)
並且失敗。我已經通過檢查其他('到')標籤存在,證實我獲得了正確的單元格。它是什麼。但UI測試不會看到錯誤標籤。我已經加入了破發點,並使用調試器這樣的測試這樣的:
(lldb) p toCell.staticTexts.count
t = 427.03s Get number of matches for: Descendants matching type StaticText
t = 427.29s Snapshot accessibility hierarchy for enterprise.com.me
t = 427.31s Find: Descendants matching type Table
(UInt) $R2 = 1
t = 427.31s Find: Descendants matching type Cell
t = 427.32s Find: Elements containing elements matching type StaticText with identifier 'to'
t = 427.32s Find: Descendants matching type StaticText
的(UInt) $R2 = 1
表明有一個靜態文本存在。然而看着模擬器,我可以清楚地看到兩個UILabel。
我已經嘗試了許多事情來單獨分離問題 - 只使用alpha
或將文本設置爲nil
或使用UIView的hidden
屬性。無論我嘗試什麼,使用這些選項中的任何一個來初始隱藏標籤都會使其在UI測試中不可見,以便日後可見。
我很困惑,我懷疑這是一個錯誤。任何人有任何想法如何讓UI測試看到UILabel一旦我使它可見?
P.S.我也嘗試使用等待循環等待標籤出現(使用expectationForPredicate(...)
,但UILabel
尚未顯示。
告訴標籤你很抱歉,也許她會回來;) –
嘗試將cell.labelText.text = nil替換爲cell.labelText.text =「」 –
您可能不得不使用'waitForExpectationsWithTimeout'來等待標籤出現。即您可能會發現應用程序與測試之間的競爭條件。 – Michael