2015-12-02 40 views
3

背景Xcode UI測試:當文本更新時,staticText的標籤不會更新?

我調查我們基於Appium自動化Xcode的UI測試的遷移。鑑於我們的應用程序是用Objective C編寫的,我還需要使用Objective-C作爲測試代碼。

我正在自動化測試的應用程序有一個進度條,其值要讀取。這不是UIAProgressIndicator,只是一個UIAStaticText,其值從「0」增加到「100%」。

XCUIElement對應於該靜態文本可以作爲

[[app staticTexts] elementBoundByIndex:1] 

訪問該進度條會採取不同的時間 - 我需要監控的進展,這將涉及讀取值(和解析它的課程)。

我嘗試使用各種方法獲取值 - [XCUIElement value][XCUIElement label]

NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label]; 

label方法就是設法讓我進度字符串,所以我在一個循環中這樣做,對於如

int i=0; 
    while (i<5) { 
    //custom sleep method 
    [self.helper threadSleepForSeconds:[NSNumber numberWithInt:2]]; 
    //now get progress text 
    NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label]; 

    i++; 
    } 

然而,隨着進度的變化,label屬性不更新 - 它似乎繼續顯示所讀取,就像它的某處緩存第一個值。

即日誌輸出顯示(假設讀的第一個值是19%):

19% 
19% 
19% 
19% 

我挺無法弄清楚爲什麼會這樣。任何幫助?

回答

2

沒有合成事件,因此Xcode不會嘗試在屏幕上拍攝UI元素的新快照。這是設計的,以便在特定視圖中分配多個UI元素變量不會使您的計算機工作過度。

不幸的是,如果您對單元測試不滿意,手動測試可能是您唯一的選擇。