2011-11-25 9 views
5

के साथ टेक्स्ट फ़ील्ड्स से मूल्य प्राप्त करना मैं समझने की कोशिश कर रहा हूं कि स्वचालित अनुप्रयोग परीक्षण करने के लिए यूआईयूटोमेशन का उपयोग कैसे किया जा सकता है, इसलिए मैंने एक तापमान कनवर्टर ऐप बनाया है जिसे जावास्क्रिप्ट इंटरफ़ेस से संचालित किया जा सकता है। यहाँ यूआई है:UIAutomation

enter image description here

शीर्ष पाठ क्षेत्र "सेल्सियस" का एक सरल उपयोग लेबल, इसी तरह तल क्षेत्र है "फारेनहाइट" अपनी पहुंच-लेबल के रूप में है। मैं इस स्क्रिप्ट के माध्यम से ड्राइव करने के लिए कोशिश कर रहा हूँ:

UIALogger.logStart("Test -40ºC == -40ºF"); 
var window = UIATarget.localTarget().frontMostApp().mainWindow(); 
var celsiusField = window.textFields()["Celsius"]; 
var fahrenheitField = window.textFields()["Fahrenheit"]; 
var convertButton = window.buttons()["Convert"]; 

celsiusField.setValue("-40"); 
convertButton.tap(); 
var fahrenheitValue = fahrenheitField.value(); 
if (fahrenheitValue == "-40.0") { 
    UIALogger.logPass("-40C == -40F"); 
} else { 
    UIALogger.logFail("-40C == " + fahrenheitValue + "F"); 
} 

यह सही ढंग से सेल्सियस क्षेत्र में पाठ सेट करने के लिए "-40", और जब बटन उपयोग किया जाता है, अनुप्रयोग के लिए फारेनहाइट फ़ील्ड में लेख अद्यतन करता है "-40.0"। हालांकि, fahrenheitValue में "फ़ारेनहाइट" (टेक्स्ट फ़ील्ड का नाम/लेबल) मान है, इसलिए परीक्षण विफल हो जाता है। मैंने सोचा कि क्या यह शायद एक समय मुद्दा था, इसलिए टैप के बाद एक-दूसरे देरी में डाल दिया, जिसने व्यवहार को नहीं बदला।

क्या टेक्स्ट फ़ील्ड से टेक्स्ट प्राप्त करना संभव है और अपेक्षित मूल्य से इसकी तुलना करना संभव है?

उत्तर

5

क्या यह "फारेनहाइट" हो रहा है क्योंकि यह एक्सेसिबिलिटी लेबल है या क्योंकि यह प्लेसहोल्डर टेक्स्ट है?

ऐसा लगता है कि मान() प्लेसहोल्डर टेक्स्ट वापस कर सकता है। उपयोगकर्ता द्वारा दर्ज किए गए पाठ को सेट करने के लिए टाइप करने के बाद टाइपधारक मूल्य को संशोधित करने के लिए एक वर्कअराउंड हो सकता है और फिर इसे हटाए जाने पर फ़ारेनहाइट पर वापस कर दिया जा सकता है? मुझे लगता है कि जब भी आप सेट वैल्यू को कॉल करते हैं तो यह तब भी कार्य करता है जब यूआईटीएक्स्टफाल्ड प्रतिनिधि तरीकों को बुलाया जाता है?

+1

ऐसा लगता है कि उत्तर दिया गया है। मैंने प्लेसहोल्डर टेक्स्ट हटा दिया, और अब चीजें काम करती हैं जैसे उन्हें चाहिए। मुझे शायद उस पर एक बग फाइल करना चाहिए :) –

0

आप अपने विचार में एक लेबल जोड़ सकते हैं, इसे अपडेट कर सकते हैं और इसे पढ़ सकते हैं।

+0

कैसे: मूल्यों को ताज़ा करने के

एक तरह से एक अद्यतन घटना भेजने के लिए है? मैंने UITextField के बजाय UILabel का उपयोग करने का प्रयास किया, और इसका एक ही परिणाम था। –

0

Accessibility Inspector को हुक अप करने का प्रयास करें ताकि यह दिखाया जा सके कि आपके ऐप में यूआईयूटॉमेशन "देखता है"। हो सकता है कि यह आपके ऐप में मान सेट करने के तरीके के कारण कुछ पुराने मूल्यों को पढ़ रहा हो।

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);