在關於Xcode中UI測試的WWDC會話中,您可以瞭解到在實際合成屬性或讀取值時對查詢進行評估。防止重新評估XCUIElementQuery
那麼何時對查詢進行評估?所以他們並沒有實際評估,只是當你創建它們。
它們按需或按需要進行評估。這意味着使用元素時,將在合成事件或讀取屬性值時評估查詢。
您可以創建該元素,但在您使用它之前,不會評估該查詢。同樣,如果您直接創建查詢,則會在您獲得匹配數時或者您調用返回所有匹配的API之一時對其進行評估。它將不得不在這一點上進行評估,我們將在UI更改時重新評估查詢。因此,根據測試的長度,您總是使用最新的應用程序視圖,而不是十秒前或兩分鐘前的數據。所以通過這種方式,您可以將查詢和元素與URL有點類似。
這是非常好的事,以確保您正在使用最新的UI狀態,但它可能會非常緩慢,並阻止您執行需要高速度的測試。看到以下內容:
CFTimeInterval startTime = CACurrentMediaTime();
XCUIElement *button = [[XCUIApplication alloc] init]/*@[email protected]*/.scrollViews/*[[".windows[@\"\\n[FYB Debug]: Reachability Flag Status: -R t------ networkStatus\"].scrollViews",".scrollViews"],[[[-1,1],[-1,0]]],[0]]@[email protected]*/.otherElements.buttons[@"StartSDK_Button"];
[button tap];
[button tap];
[button tap];
[button tap];
[button tap];
CFTimeInterval endTime = CACurrentMediaTime();
NSLog(@"EXECUTION TIME = %f", endTime - startTime);
2017-04-20 11:04:03.381102+0800 XCTRunner[6368:854885] EXECUTION TIME = 5.619870
所以我想知道,有沒有辦法在測試過程中暫時改變這種行爲和查詢元素只有一次?