2012-07-08 14 views
9

टैप करने से पहले तत्व मौजूद है या नहीं, हमारे पास एक आईपैड ऐप है जिसमें दो कॉलम न्यूज़ रीडर शामिल हैं। बाएं दृश्य में खबरों की सूची होती है, जिनमें से कुछ लिंक सीधे एक समाचार के लिए होते हैं और कुछ अन्य दृश्य नियंत्रक को समाचार की एक और सूची के साथ धक्का देते हैं। यह नेविगेशन बार के leftBarButtonItem के रूप में सेट करने के लिए UIButton का भी कारण बन जाएगा। यदि हम पहले स्तर पर हैं, तो एक साधारण छवि जिसे टैप नहीं किया जा सकता है leftBarButtonItem होगा।UIAutomation:

मेरा लक्ष्य अब एक परीक्षण है जो पहले स्तर पर हर खबर को टैप करता है। यदि कोई समाचार दूसरी स्तर की सूची की ओर जाता है, तो उसे नेविगेशन बार में UIButton टैप करना चाहिए।

मैं कैसे देख सकता हूं, अगर leftBarButtonItem "tappable" है? चूंकि यह या तो एक छवि या एक बटन हो सकता है, तो बस navigationBar().leftButton().tap() पर कॉल करने से यह एक त्रुटि हो सकती है यदि यह एक छवि है।

यदि मैं कोई मदद करता हूं तो मैं ट्यूनअप लाइब्रेरी का भी उपयोग कर रहा हूं।

उत्तर

17

यूआईयूटोमेशन में लगभग सभी तत्वों को टैप किया जा सकता है। इससे कोई फर्क नहीं पड़ता कि यह एक छवि, दृश्य या बटन है। यदि आप जिस ऑब्जेक्ट को टैप करने का प्रयास कर रहे हैं, तो आपको एक त्रुटि मिलेगी। जाँच कैसे करें:

if (navigationBar().leftButton().checkIsValid()) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

या आप जाँच कर सकते हैं एक वस्तु आप दोहन करने के लिए कोशिश कर रहे हैं, उदाहरण के लिए एक बटन है अगर (नहीं सबसे अच्छा तरीका है, लेकिन यह काम करता है):

if (navigationBar().leftButton().toString() == "[object UIAButton]") 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

checkIsValid () सभी यूआई तत्वों के लिए उपलब्ध है। यदि कोई ऑब्जेक्ट मौजूद है तो यह सच वापस करेगा। toString() वापस आ जाएगी [वस्तु UIAElementNil] तत्व अमान्य है या [वस्तु UIAButton] या [वस्तु UIAImage] वापस आ जाएगी है।

इसके अलावा एप्पल प्रलेखन उपयोग करने का प्रयास: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

0

आप बस का उपयोग कर सकते

if (navigationBar().leftButton().exists) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
}