2015-12-14 4 views
5

ऐप्पल से यूआई परीक्षण फ्रेमवर्क के लिए उचित दस्तावेज ढूंढना मुश्किल है। मैंने कई उदाहरण देखे हैं जहां विशिष्ट नामों के साथ बटन और लेबल ढूंढना संभव है, लेकिन मैं सामान्य UIViews को कैसे देख सकता हूं?XCUIElementsQuery का उपयोग करके UIView के अस्तित्व के लिए मैं कैसे परीक्षण कर सकता हूं?

उदाहरण के लिए, मान लीजिए कि मैंने accessibilityLabel == "कुछ दृश्य" के साथ एक दृश्य सेट किया है, तो परीक्षण निष्पादन के दौरान मुझे उस नाम के साथ एक दृश्य कैसे मिल सकता है?

मैंने कोशिश की (असफल) निम्नलिखित कोड:

XCUIElement *pvc = [[app childrenMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View'"]]; 

NSPredicate *exists = [NSPredicate predicateWithFormat:@"exists == true"]; 
[self expectationForPredicate:exists evaluatedWithObject:pvc handler:nil]; 
[self waitForExpectationsWithTimeout:10 handler:nil]; 

NSLog(@"%@", [[app childrenMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View Controller'"]]); 

उत्तर

5
समस्या मैं कोड आप ऊपर है के साथ देख

कि आप विशेष रूप से अनुप्रयोग के बच्चों में एक दृश्य के खोजने की कोशिश कर रहे हैं, के बजाय ऐप के वंशज। बच्चे दृढ़ता से एक दृश्य के सबव्यू हैं, और खोज उप-उप-विचारों को नहीं देखेगी, आदि इसके अलावा, यह ठीक दिखता है।

प्रयास करें:

XCUIElement *pvc = [[app descendantsMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View'"]]; 

इसके अलावा, UIView के लिए डिफ़ॉल्ट लेबल (और एक लेबल करने के बारे में अपने प्रश्न में संयोग से कोड स्निपेट सेटिंग के अलावा सब पर पहुंच में भाग नहीं है, इसलिए है कर रहा है काम के बजाय तुलना) आप भी आप आसान तरीका को सक्षम यह सुनिश्चित करना चाहिये:

view.isAccessibilityElement = YES 
view.accessibilityLabel = @"AccessibilityLabel" 
+0

ओह, मैं बच्चों की तलाश में अपनी गलती देखता हूं। दुर्भाग्य से वंशजों की तलाश में काम नहीं किया गया ... मैंने एक बड़ा टाइमआउट सेट करने की कोशिश की लेकिन एक्सकोड को उस एक्सेसिबिलिटी लेबल के साथ कोई दृश्य नहीं मिला। –

+0

यदि आप अभिगम्यता निरीक्षक का उपयोग करते हैं, तो क्या आप उस दृश्य का चयन कर सकते हैं जिसे आप ढूंढने का प्रयास कर रहे हैं? आपको यह सुनिश्चित करने की ज़रूरत है कि लेबल सेट करने के अलावा अभिगम्यता सक्षम हो। डिफ़ॉल्ट रूप से मेरा मानना ​​है कि UIView अभिगम्यता के लिए सक्षम नहीं है। –

1

अन्य जवाब कार्यों से क्वेरी है, लेकिन मुझे लगता है कि आप भी बस के साथ विचारों पा सकते हैं लगता है:

app.otherElements["MenuViewController.menuView"].swipeLeft() 

कहाँ मेरे मामले MenuViewController.menuView में एक accessibilityIdentifier सेट के साथ एक UIView है।

संबंधित मुद्दे

 संबंधित मुद्दे