Appium ड्राइवरों के साथ परिचित (या आवश्यक एक का चयन कैसे करें)

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



Appium एक क्रॉस-प्लेटफ़ॉर्म टूल है जो आपको एक ही समय में मोबाइल (iOS और Android) और डेस्कटॉप एप्लिकेशन के परीक्षण को स्वचालित करने की अनुमति देता है। इस मल्टी-प्लेटफॉर्म मॉडल को लागू करने का तरीका विभिन्न ड्राइवरों का उपयोग करना है। अनिवार्य रूप से, Appium में सेलेनियम वेबड्राइवर के समान ही वास्तुकला है, जो क्रॉस-ब्राउज़र टेस्ट ऑटोमेशन का समर्थन करने के लिए कई स्वतंत्र ड्राइवरों का भी उपयोग करता है।

अलग-अलग स्वचालन उपकरण के लिए अलग-अलग Appium ड्राइवर हैं, जिसका अर्थ है आमतौर पर प्रत्येक प्लेटफ़ॉर्म के लिए एक ड्राइवर का उपयोग करना (iOS के लिए एक, Android के लिए एक, आदि)। हालाँकि, इसके कुछ अपवाद भी हैं। वे इस तथ्य से संबंधित हैं कि कुछ प्लेटफार्मों के लिए परीक्षण अनुप्रयोगों के स्वचालन में (उदाहरण के लिए, एंड्रॉइड के लिए) ऐप्पियम के संयोजन में कई उपकरणों का उपयोग किया जाता है। वास्तव में, Android के लिए तीन ड्राइवर हैं: UiAutomator, UiAutomator 2, और एस्प्रेसो पर आधारित।

ड्राइवरों के संचालन का सिद्धांत


ड्राइवर शायद पूरे टूल का सबसे महत्वपूर्ण घटक हैं, क्योंकि उनका कार्य एक विशिष्ट प्लेटफॉर्म पर ऐपियम एपीआई (जिसे वेबड्राइवर प्रोटोकॉल के रूप में जाना जाता है) के कमांड को निष्पादित करना है। संक्षेप में, ड्राइवर अनुवादक हैं जो आईओएस, एंड्रॉइड, आदि पर कमांड निष्पादित करने वाले कुछ में एपियम क्लाइंट कोड को बदलते हैं।

वास्तु सादगी के लिए, अन्य कारणों के अलावा, प्रत्येक व्यक्ति चालक स्वयं एक स्टैंडअलोन वेबड्राइवर-संगत सर्वर है (हालांकि इसमें सभी विकल्प नहीं हैं जो मुख्य ऐपियम सर्वर में हैं)। ड्राइवर के अंदर, प्राप्त आदेशों को एक अजीब तरीके से संसाधित किया जाता है। उदाहरण के लिए, उन्हें एक अलग प्रक्रिया में स्थानांतरित किया जा सकता है जो एंड्रॉइड डिवाइस पर जावा कोड चलाता है।

ड्राइवरों के पास खुद एक जटिल जटिल आंतरिक वास्तुकला है, कभी-कभी प्रौद्योगिकियों की एक पूरी श्रृंखला पर आधारित होती है। नीचे एक चित्र है जो XCUITest ड्राइवर (वर्तमान iOS ड्राइवर) में शामिल प्रौद्योगिकियों के ढेर को दिखाता है:

जैसा कि आप देख सकते हैं, XCUITest ड्राइवर का सिद्धांत इतना सरल नहीं है। यह Appium के हिस्से के रूप में उपलब्ध है और जब भी आप iOS सत्र शुरू करते हैं, तब शुरू होता है। ड्राइवर के अंदर, यह एक अन्य टूल का उपयोग करता है, जिसे WebDriverAgent के रूप में जाना जाता है, जो WebDriver Protocol कमांड को XCUITest लाइब्रेरी कॉल में कनवर्ट करने के लिए जिम्मेदार है।

कई ड्राइवरों के पास एक समान वास्तुकला होती है, हालांकि उनमें से प्रत्येक अपने स्वयं के कार्यान्वयन कर सकता है, क्योंकि अंततः ड्राइवर को एनपीएम में एक वर्ग के रूप में प्रकाशित किया जाता है जो अप्पियम बेसड्राइवर वर्ग को विरासत में मिला है। इससे ड्राइवर आसानी से एपियम से जुड़ सकते हैं।

ड्राइवरों के प्रकार


तो कितने ड्राइवर हैं? ईमानदारी से, यह सुनिश्चित करने के लिए कहना काफी मुश्किल है, क्योंकि, आधिकारिक Appium ड्राइवरों के अलावा, अनौपचारिक भी हैं। लेकिन अगर हम Appium के स्रोत कोड को देखते हैं, तो हम निम्नलिखित देखेंगे:

const AUTOMATION_NAMES = { APPIUM: 'Appium', UIAUTOMATOR2: 'UiAutomator2', UIAUTOMATOR1: 'UiAutomator1', XCUITEST: 'XCUITest', YOUIENGINE: 'YouiEngine', ESPRESSO: 'Espresso', TIZEN: 'Tizen', FAKE: 'Fake', INSTRUMENTS: 'Instruments', WINDOWS: 'Windows', MAC: 'Mac', }; 

ऑटोमेशन नाम विभिन्न ड्राइवरों के लिए कुंजी है जिनका उपयोग एपियम करता है। कोड का यह खंड निर्धारित करता है कि कौन सी लाइनों को स्वचालन नाम क्षमता के लिए मान के रूप में उपयोग करने की अनुमति है। प्रत्येक ड्राइवर आमतौर पर केवल एक प्लेटफॉर्म का समर्थन करता है। यहाँ प्रत्येक चालक का उनके स्वचालन के आधार पर संक्षिप्त विवरण दिया गया है:

  • Appium चयनित प्लेटफ़ॉर्म के लिए डिफ़ॉल्ट ड्राइवर का केवल एक संकेतक है और एक अलग ड्राइवर नहीं है;
  • UiAutomator2 ( रिपॉजिटरी ) - एंड्रॉइड प्लेटफॉर्म के लिए वर्तमान ड्राइवर, डिफ़ॉल्ट रूप से और Google UiAutomator टूल पर आधारित है;
  • UiAutomator1 ( रिपॉजिटरी ) एक पुराना Android ड्राइवर है जो UiAutomator के पुराने संस्करण पर आधारित है। भविष्य में इस ड्राइवर का समर्थन नहीं किया जाएगा, इसलिए इसे यूआईओटोमेटर 2 के पक्ष में छोड़ देना बेहतर है;
  • XCUITest ( रिपॉजिटरी ) - Apple XCUITest टूल के आधार पर iOS के लिए डिफ़ॉल्ट ड्राइवर;
  • YouiEngine ( रिपॉजिटरी ) - You.i लैब्स के डेवलपर्स का एक ड्राइवर, जो अपने एसडीके के आधार पर बनाए गए विभिन्न प्लेटफार्मों के लिए आवेदन परीक्षण को स्वचालित करने के लिए उपयोग किया जाता है;
  • एस्प्रेसो ( रिपॉजिटरी ) - Google एस्प्रेसो टूल पर आधारित एंड्रॉइड के लिए नवीनतम ड्राइवर;
  • Tizen ( रिपॉजिटरी ) - Tizen OS में उपयोग किए जाने वाले Xamarin- आधारित अनुप्रयोगों के परीक्षण को स्वचालित करने के लिए सैमसंग डेवलपर्स का एक ड्राइवर;
  • फेक (नाम खुद के लिए बोलता है) का उपयोग एपियम के आंतरिक परीक्षण उपकरण के रूप में किया जाता है। आपको इसका उपयोग कभी नहीं करना होगा;
  • उपकरण ( रिपॉजिटरी ) - iOS 9.3 और नीचे के अनुप्रयोगों के लिए उपयोग किया गया एक पुराना ड्राइवर;
  • विंडोज ( रिपॉजिटरी ) - Microsoft ने Appium के साथ संगत एक सर्वर को इकट्ठा किया है, इसे WinAppDriver कहते हैं, और यह ड्राइवर इसे मुख्य Appium सर्वर से जोड़ता है। सीधे विंडोज़ के लिए डेस्कटॉप एप्लिकेशन को स्वचालित करने के लिए डिज़ाइन किया गया;
  • मैक ( रिपॉजिटरी ) - एक ड्राइवर जो आपको मैक के लिए परीक्षण डेस्कटॉप अनुप्रयोगों को स्वचालित करने की अनुमति देता है।

जैसा कि पहले ही उल्लेख किया गया है, इनमें से प्रत्येक ड्राइवर की अपनी वास्तुकला है, जिसे इस चित्र को देखकर देखा जा सकता है:


ड्राइवरों के लिए अक्सर पूछे जाने वाले प्रश्न


तो आप कैसे जानते हैं कि किस ड्राइवर का उपयोग करना है?

ठीक है, अगर आपको iOS, विंडोज, मैक या टिज़ेन के लिए एप्लिकेशन के लिए ऑटोटेस्ट लिखने की आवश्यकता है, तो चुनाव स्पष्ट है - इनमें से प्रत्येक प्लेटफॉर्म के लिए डिफ़ॉल्ट ड्राइवर का उपयोग करें। एंड्रॉइड के लिए, यहां आपको UiAutomator2 और एस्प्रेसो के बीच चयन करना है। इनमें से प्रत्येक उपकरण के बारे में पहले से अधिक जानना और समझना कि आपके मामले में कौन सा सबसे अच्छा है। UiAutomator2 और एस्प्रेसो ड्राइवरों की क्षमताएं समान हैं, लेकिन पूरी तरह समान नहीं हैं।

क्या सभी ड्राइवर समान आदेशों का समान रूप से समर्थन करते हैं?

हाँ और नहीं। एक बुनियादी स्तर पर, हम मंच प्रदाताओं द्वारा प्रदान की जाने वाली स्वचालन क्षमताओं द्वारा सीमित हैं। एंड्रॉइड डिवाइस पर टैप एक iOS डिवाइस पर ही काम करता है। लेकिन अन्य आदेशों को निष्पादित करने की प्रक्रिया भिन्न हो सकती है। जहां तक ​​संभव हो, Appium डेवलपर्स, विभिन्न प्लेटफार्मों पर एक ही ड्राइवर व्यवहार सुनिश्चित करने का प्रयास करते हैं।

क्या मैं एक ड्राइवर से दूसरे ड्राइवर पर जा सकता हूं और अपने परीक्षणों के विफल होने की उम्मीद कर सकता हूं?

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

क्या मैं अपना खुद का ड्राइवर बना सकता हूं?

हाँ! कई लोग पहले से ही ऐसा कर चुके हैं, विशेष रूप से, जेसन हग्गिन्स और मैं (AppiumConf 2019 पर)। लेकिन अन्य मालिकाना ड्राइवर हैं, जैसे कि क्रिश्चियन ब्रोमन के एचबीटीटीवी ड्राइवर

क्या ड्राइवर बदलेंगे Appium 2.0 में?

यह एक बहुत अच्छा सवाल है! Appium ड्राइवर सिस्टम के नकारात्मक पहलुओं में से एक यह है कि वे सभी Appium सर्वर निर्भरता में शामिल हैं। लेकिन हम यह सुनिश्चित करने के लिए आगे बढ़ रहे हैं कि ड्राइवर कम सामंजस्यपूर्ण प्रणाली में मौजूद हैं, जहां आप चुन सकते हैं कि कौन से विशिष्ट ड्राइवर एपियम के साथ उपयोग करें। यदि आप इस समस्या को हल करते हैं, तो आपको पुराने UiAutomator2 ड्राइवर को स्थापित करने की आवश्यकता नहीं है और जब आप केवल iOS परीक्षण चलाने के लिए Appium का उपयोग करते हैं तो इसकी निर्भरता को कनेक्ट करें। (क्या आप जानते हैं कि Appium 2.0 के विकास के लिए एक प्रस्ताव है ?)

मुझे उम्मीद है कि यह लेख आपके लिए उपयोगी रहा होगा। मुझे Appium ड्राइवरों का उपयोग करके आपके अनुभव के बारे में टिप्पणियों में पढ़ने में खुशी होगी।

Source: https://habr.com/ru/post/hi480490/


All Articles