2013-03-26 7 views
6

के लिए सेलेनियम पायथन बाइंडिंग में सभी तत्वों का आकलन करें, मैं अपनी कंपनी के मोबाइल एप्लिकेशन का परीक्षण करने के लिए एपियम के साथ शुरुआत करने की कोशिश कर रहा हूं। मैं स्क्रिप्ट लिखने के लिए पाइथन बाइंडिंग का उपयोग करना चाहता हूं, और मुझे एंड्रॉइड ऐप्स से शुरुआत करने की आवश्यकता है।एपियम

मेरे पास सभी काम कर रहे एपियम उदाहरण हैं। मैं grunt android चला सकता हूं और परीक्षण काम करता है, और मैं android.py नमूना ऐप चला सकता हूं।

लेकिन मैं कुल नौसिखिया हूं और मेरे पास मेरी कंपनी के ऐप्स में नियंत्रण की पहचान करने की स्पष्ट तस्वीर नहीं है। मुझे पायथन के साथ अनुभव हुआ है इसलिए मैंने सोचा कि मैं केवल नियंत्रण तत्वों की एक सूची तैयार करूंगा और उनका आत्मनिरीक्षण करूंगा।

मैं अटक गया हूँ! driver.find_elements_by_tag_name() जैसी सभी विधियों को एक विशिष्ट पहचानकर्ता की आवश्यकता होती है (या कम से कम मुझे कोई वाइल्डकार्ड नहीं मिला है)।

मैं एंड्रॉइड ऐप का परीक्षण करने वाले तत्वों के एपियम पेड़ का निरीक्षण कैसे कर सकता हूं? मैं सभी तत्वों का आकलन कैसे कर सकता हूं ताकि मैं उनका आत्मनिरीक्षण कर सकूं? क्या कोई पेड़ है जो ऐप में सभी तत्वों को ढूंढने के लिए चल सकता है?

मुझे उम्मीद थी कि मैं ऐप्स के लिए स्रोत कोड प्राप्त करने, ग्रहण में ऐप्स बनाने, आदि के बिना तत्वों को समझ सकता हूं लेकिन यदि आवश्यक हो तो मैं यह कर सकता हूं।

पीएस मैं पायथन का उपयोग करना पसंद करूंगा, लेकिन अगर यह बेहतर काम करता है तो आत्मनिरीक्षण करने के लिए कुछ और उपयोग करने के लिए खुलेगा। मैं अभी भी पायथन में वास्तविक परीक्षण लिख सकता हूं, जब तक कि दूसरी भाषा किसी भी तरह से बेहतर न हो।

उत्तर

2

मैं अभी भी पायथन से सेलेनियम इंटरफ़ेस का आत्मनिरीक्षण करने का एक तरीका चाहूंगा। लेकिन मुझे ऐप को कैसे रखा गया है, इसकी एक स्पष्ट छवि प्राप्त करने के लिए एक व्यावहारिक तरीका मिला है, और यह पता लगाना बहुत आसान है कि सेलेनियम परीक्षण कैसे लिखना है।

सबसे पहले, अपने ऐप को अपने एंड्रॉइड डेवलपमेंट कंप्यूटर या एमुलेटर से जुड़े वास्तविक डिवाइस पर चलाएं। असल में यदि आप adb devices चलाते हैं तो आप एक ही डिवाइस देखना चाहते हैं, जो आपका ऐप चला रहा है। इसके बाद, uiautomatorviewer उपकरण चलाएं, और उसके बाद Device Screenshot टूलबार आइकन पर क्लिक करें। (केवल दो टूलबार आइकन हैं: पहला Open आइकन है और एक फ़ाइल फ़ोल्डर जैसा दिखता है, और जो आप चाहते हैं वह मोबाइल फोन के ढेर जैसा दिखता है।)

एक बार जब आप ऐसा कर लेंगे, तो आपके ऐप की एक छवि बाईं ओर एक स्क्रीनशॉट के साथ, और दाईं ओर एक browsable पेड़ रूपरेखा के साथ प्रकट होता है। रूपरेखा ऐप के सभी नियंत्रणों को उनके टेक्स्ट लेबल्स के साथ, यदि कोई हो, और अन्य जानकारी (जैसे कि clickable संपत्ति true या false उस नियंत्रण के लिए) दिखाती है।

एक चेतावनी: नियंत्रण संख्या दिखाए जाते हैं, लेकिन सेलेनियम बाइंडिंग में, संख्याएं समान नहीं हो सकती हैं। ApiDemos उदाहरण ऐप पर, Graphics बटन में इंडेक्स नंबर 4 है क्योंकि यह पांचवां बटन है, लेकिन इसकी स्थिति से इसे एक्सेस करने के लिए मुझे इंडेक्स 5 का उपयोग करना पड़ा। इंडेक्स 0 एक गैर-क्लिक करने योग्य ऑब्जेक्ट था जिसे टेक्स्ट "एपीआई डेमो" स्क्रीन के लिए शीर्षलेख बनाने वाले FrameLayout ऑब्जेक्ट में।

#elem = driver.find_element_by_name('Graphics') 
elem = driver.find_elements_by_tag_name('TextView')[5] 

बाहर driver.find_element_by_name() कॉल टिप्पणी, और बदले छठे TextView पूरे एप्लिकेशन में मिल:

तो, मैं android.py स्क्रिप्ट में यह परिवर्तन करने में सक्षम था। यह सबसे अच्छा अभ्यास नहीं है लेकिन यह दिखाता है कि uiautomationviewer परिणाम मुझे उन चीज़ों को देखने देते हैं जिन्हें मुझे नियंत्रणों के बारे में जानने की आवश्यकता है।

अब मैं आत्मनिरीक्षण का एक छोटा सा करने के लिए पर्याप्त पता है:

for elem in driver.find_elements_by_tag_name('TextView'): 
    if elem.text == "Graphics": 
     break 
else: 
    print("Could not find desired item") 

यह सिर्फ driver.find_element_by_name() बुला की तुलना में बेहतर नहीं है बल्कि यह पता चलता है कि मैं सही रास्ते पर हूँ।

uiautomatorviewer मेरी समस्या का एक व्यावहारिक समाधान है। यदि आपके पास शुद्ध पाइथन है तो कृपया मुझे इसके बारे में बताएं।

3

एपियम वेबड्राइवर के "पृष्ठ स्रोत" विधि का समर्थन करता है। तो आप यह कर सकते हैं:

# assume you have a driver object 
import json 

source = driver.page_source 
source = json.loads(source) 
# you can now work with source as a python object 
+0

उत्तर के लिए धन्यवाद। मैंने पहले ही यह कोशिश की है, और यह मेरे लिए काम नहीं करता है ... परीक्षण सत्र एक त्रुटि के साथ समाप्त होता है। क्या आपने इसे आईओएस एप्लिकेशन या एंड्रॉइड एप्लिकेशन के साथ परीक्षण किया था? मैं शर्त लगाता हूं कि यह आईओएस के लिए ठीक से काम करता है, लेकिन मुझे नहीं लगता कि यह एंड्रॉइड के लिए अभी तक काम करता है। – steveha

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