मैं एक्सकोड 7 की एक्ससीटीएस्ट यूआई परीक्षण कार्यक्षमता का उपयोग करके एक पेड़ वॉकर बनाने की कोशिश कर रहा हूं जो व्यवस्थित रूप से एक निर्दिष्ट गहराई के लिए तालिका दृश्यों के एक निर्धारक पेड़ की पड़ताल करता है। यह लगभग काम करता है, सिवाय इसके कि मैं किसी भी तत्व पर टैप को वास्तव में एक नई स्क्रीन में संक्रमण को ट्रिगर करने के लिए भरोसेमंद ढंग से पता नहीं लगा सकता हूं। मेरे पास एक हैकी विधि है जो अधिकांश समय काम करती है, जो यह पता लगाने के लिए है कि या तो एनएवी बार लेबल बदल गया है या मेनू तत्वों की संख्या बदल गई है।मेरा एक्सकोड यूआई परीक्षण कैसे पता लगा सकता है कि स्क्रीन बदल गई है?
पहले परीक्षण में झूठी नकारात्मकताएं हैं, क्योंकि लगातार स्क्रीनों में समान नौसेना बार लेबल हो सकते हैं (कोडबेस मैं चल रहा हूं मेरा नहीं है)। दूसरे परीक्षण में झूठी सकारात्मक विशेषताएं हैं, क्योंकि कभी-कभी तालिका तत्व पर क्लिक करने से किसी अन्य तालिका/स्क्रीन में संक्रमण नहीं होता है बल्कि इसके बजाय वर्तमान स्क्रीन में अतिरिक्त तत्व जोड़ते हैं।
कुछ पढ़ने के बाद, ऐसा लगता था कि अभिगम्यता लेबल का उपयोग करने का तरीका हो सकता है। तो मैंने एप्लिकेशन कोड (व्यूडिडएपियर में) में एनएवी बार के एक्सेसिबिलिटी लेबल के लिए यूआईडी सेट किया और उसके बाद यूआई टेस्ट कोड में इसका परीक्षण किया। ऐसा लगता है कि यह काम करना चाहिए, लेकिन मुझे टेस्ट कोड में केवल शून्य का मान वापस प्राप्त होता है।
मैं स्वतंत्र रूप से कबूल करता हूं कि जब मैं यूआई परीक्षण की बात करता हूं तो मैं नोब हूं और मुख्य रूप से कटौती/पेस्ट/अन्य लोगों के कोड को अनुकूलित कर रहा हूं, जो मैं कर रहा हूं उसकी स्पष्ट समझ के बिना। तो मैं संभवतः स्क्रीन के बदल गए हैं और यह पता लगाने के लिए वैचारिक स्तर पर पहुंचने योग्य लेबल कोड में कुछ प्रकार का बेवकूफ गलती कर रहा हूं; शायद कुछ आसान/अधिक मूर्खतापूर्ण मैं कर सकता हूं।
आवेदन में:
- (void)viewDidAppear: (BOOL)animated {
[super viewDidAppear: animated];
//...
UINavigationBar* navBar = self.navigationController.navigationBar;
if(navBar)
{
static NSInteger s_UID = 0;
navBar.topItem.accessibilityLabel = [NSString stringWithFormat:@"UID-%ld", s_UID++];
}
}
XCTest यूआई परीक्षण में:
- (NSString*) navBarAccessibilityLabel: (XCUIApplication*) app
{
NSString* result = NULL;
XCUIElementQuery *navBars = app.navigationBars;
XCUIElement* firstElem = [navBars.staticTexts elementBoundByIndex:0];
if(firstElem)
{
result = (NSString*)firstElem.accessibilityLabel; // This is always nil
}
return result;
}
नोट firstElem पाया जाता है, और है कि मैं जैसे निकालने में सक्षम हूँ कि firstElem.label इससे बहुत खुशी से।
किसी भी मदद की सराहना की।
साथ एक महान लेख था यू किसी भी समाधान मिल मिल सकती है? @ कaitैन? –