2016-05-11 12 views
10

मैं फास्टलेन द्वारा स्क्रेंग्राब का उपयोग करने के लिए अपने प्रतिक्रिया मूल एंड्रॉइड एप्लिकेशन पर एस्प्रेसो के साथ कुछ यूआई परीक्षण करने की कोशिश कर रहा हूं।प्रतिक्रिया मूल के लिए एस्प्रेसो यूआई परीक्षण का उपयोग कैसे करें?

मैंने एक परीक्षण लिखने में सक्षम होने के लिए मौजूदा ऐप में प्रतिक्रिया मूल को एकीकृत करने के लिए this tutorial का पालन किया है। लेकिन जब मैंने अपना यूआई टेस्ट लिखना शुरू किया, तो मुझे यह जानने में असमर्थ था कि क्या लिखना है और घटक को कैसे लक्षित करना है और उदाहरण के लिए उस पर क्लिक करना है।

मुझे this पोस्ट मिला जहां कोई व्यक्ति प्रतिक्रियात्मक मूल के लिए एस्प्रेसो टेस्ट लिखने के बारे में एक उदाहरण देता है लेकिन यह मेरे लिए काम नहीं करता है ... मेरे किसी भी घटक में संसाधन-आईडी सेट नहीं है, इसलिए मुझे नहीं पता कि कैसे मेरे आवेदन पर कुछ कार्रवाई करें।

अगर कोई मुझे प्रतिक्रियात्मक ऐप पर एस्प्रेसो के साथ यूआई टेस्ट लिखने में मदद कर सकता है या मुझे अपने एंड्रॉइड एप्लिकेशन के स्वचालित स्क्रीनशॉट लेने के लिए एक और समाधान दे सकता है जो बहुत ही बढ़िया होगा।

यदि आपके कोई प्रश्न हैं तो मुझे बताएं।

उत्तर

9

एस्प्रेसो

इस समय वहाँ जटिल कार्यों बनाने के लिए प्रतिक्रिया देशी, इसलिए, के साथ संसाधन-आईडी सेट करने के लिए आप कुछ कोड (तत्वों के लिए प्रतीक्षा की तरह) लिखने की ज़रूरत कोई रास्ता नहीं, अन्य बातों के लगता है के माध्यम से काफी अच्छा काम एंड्रॉइड स्टूडियो 'रिकॉर्ड एस्प्रेसो टेस्ट' बटन।

  1. उपयोग तत्वों के लिए आईडी के रूप में सहारा accessibilityLabel (जैसे। "ElementId")
  2. उपयोग onView(allOf(withContentDescription("elementId"), isDisplayed())) तत्व
  3. पाने के लिए उस तत्व पर कार्रवाई peform (जैसे element.perform(click()))

यहाँ आप पा सकते हैं पूर्ण परीक्षण https://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa

एपियम

,210

तुम सिर्फ कार्रवाई करने और स्क्रीनशॉट कैप्चर करना चाहते हैं, तो आप appium के साथ ऐसा कर सकते हैं:

  1. उपयोग तत्वों
  2. वेब चालक प्रयोग में लिए आईडी के रूप में सहारा accessibilityLabel saveScreenshot साथ
  3. कब्जा स्क्रीनशॉट waitForElementByAccessibilityId (' out.png ') -> इस बनाएगा' 'जहां परीक्षण

appium में आप अंत में (जे एस उदाहरण की तरह कुछ होगा) दौड़े हैं निर्देशिका में फ़ाइल out.png:

driver.waitForElementByAccessibilityId('searchInputAcc', 5000) 
     .type('bold\n') 
     .sleep(5000) 
     .saveScreenshot('out.png') 

आईओएस बनाम एंड्रॉयड accessibilityLabels

ऐसा लगता है कि Android के लिए आप (पाठ, देखें और इतने पर) की तरह किसी भी तत्व पर accessibiltyLabel उपयोग करने के लिए स्वतंत्र हैं, लेकिन आईओएस जैसे सभी तत्वों पर पहुंच सेट नहीं करेगा Adnroid।

आप Text पर लेबल सेट यदि यह बराबर नहीं होगा अपने लेबल

<Text accessibilityLabel="my_text">content</Text> 

आप लेबल iOS पर बराबर content दे देंगे, तो बुनियादी तौर पर आप सिर्फ इस मंच

के लिए सेट कर सकते हैं accessible अपने पाठ नोड्स पर विशेषता
<Text accessible>content</Text> 

View के लिए वही बात - आईओएस आपके लेबल को अनदेखा कर देगा।

अब तक, आईओएस पर ज्यादा तत्व आपके कस्टम एक्सेसिबिलिटी लेबल्स के साथ काम नहीं करेंगे। , IOS और Android पर एक ही काम करेंगे तुम सिर्फ कर सकते हैं -

  • TouchableHighlight:

    नीचे है कि आप

    आप उपयोग कर सकते हैं प्रतिक्रिया देशी परीक्षण

    पार मंच के लिए आवेदन का परीक्षण करने के लिए उपयोग कर सकते तत्वों की सूची है accessibilityLabel
  • सेट
  • Text - accessibilityLabel आंतरिक परीक्षण के रूप में एक ही होना चाहिए + आप सुलभ गुण सेट करने के लिए

(दोनों प्लेटफार्मों के लिए पूर्ण रूप से) काम नहीं करेगा:

  • View

पी.एस. हम अभी तक सभी संभव तत्वों का परीक्षण नहीं किया है, तो अन्य तत्वों के लिए अपने परिणामों को जोड़ सकते हैं या हमारे परिणाम

डिबगिंग के लिए प्रतीक्षा

आप मूल तत्व, प्रिंट का स्रोत हो और डीबगिंग उद्देश्यों के लिए एक्सएमएल के रूप में पढ़ (कर सकते हैं webdriver.io के लिए: http://webdriver.io/api/property/getSource.html)

5

मेरे पास resource-id के लिए उचित समर्थन जोड़ने के लिए प्रतिक्रिया-मूल के खिलाफ एक पीआर है। इसे बाहर की जाँच करें और ऊपर वोट दें: https://github.com/facebook/react-native/pull/9942

एक बार है कि testID में विलय कर दिया है जब तक कि ईद res/values/ids.xml में परिभाषित किया गया है resource-id जोड़ देगा।

0

वर्तमान में यदि आप अपनी प्रतिक्रिया परत में testID सेट करते हैं जिसे एंड्रॉइड में टैग में अनुवादित किया जाएगा।

तो एस्प्रेसो के साथ आप फिर प्रदान की ViewMatcher withTagValue link

उपयोग कर सकते हैं आप सभी के लिए एक दृश्य को खोजने के लिए क्या करना है

onView(withTagValue(is((Object) tagValue))).perform(click()); 
है
संबंधित मुद्दे