Appium मेवन निर्भरता: सेटअप के साथ Eclipse परियोजना उदाहरण

⚡ स्मार्ट सारांश

Appium मेवन डिपेंडेंसी मैनेजमेंट एक मोबाइल ऑटोमेशन प्रोजेक्ट को pom.xml में java-client आर्टिफैक्ट घोषित करने की अनुमति देता है, जिससे मेवन स्वचालित रूप से प्रत्येक जार को रिजॉल्व कर लेता है और वही बिल्ड बिना मैन्युअल डाउनलोड के किसी भी मशीन पर चलता है।

  • 🔴 मेवन क्या करता है: Apache Maven यह बिल्ड लाइफसाइकिल का प्रबंधन करता है और एक ही डिक्लेरेटिव pom.xml फ़ाइल से निर्भरताओं को हल करता है।
  • एक कलाकृति: io.appium java-client निर्भरता निम्नलिखित को शामिल करती है: Selenium एपीआई, रिमोट ड्राइवर और सपोर्ट जार ट्रांजिटिवली।
  • संस्करण अनुशासन: जावा-क्लाइंट रिलीज़ को इससे मिलाएँ Selenium यह रनटाइम पर NoSuchMethodError से बचने के लिए रेंज घोषित करता है।
  • 🧪 निश्चित लेआउट: Surefire केवल src/test/java के अंतर्गत आने वाली क्लासों को ही निष्पादित करता है, इसलिए गलत जगह पर रखे गए टेस्ट कंपाइल तो हो जाते हैं लेकिन कभी चलते नहीं हैं।
  • कमांड लाइन: mvn clean test कमांड कमांड कमांड को कंपाइल और एक्जीक्यूट करता है, और परिणाम target/surefire-reports में लिखता है।
  • 📊 आवश्यक: Maven कभी शुरू नहीं होता Appium सर्वर या डिवाइस, दोनों का निर्माण शुरू होने से पहले तैयार होना आवश्यक है।

Appium pom.xml और java-client आर्टिफैक्ट के साथ Maven डिपेंडेंसी सेटअप

एचएमबी क्या है? Apache Maven?

Apache Maven एक Java-आधारित परियोजना प्रबंधन और स्वचालन उपकरण। यह डेवलपर्स के लिए संपूर्ण बिल्ड जीवनचक्र को आसान बनाने के लिए एक मल्टीटास्किंग फ्रेमवर्क प्रदान करता है Java अनुप्रयोगों के लिए। Maven को POM (प्रोजेक्ट ऑब्जेक्ट मॉडल) नामक XML प्रारूप में पूर्व-परिभाषित और घोषित किया गया है और इसे 'pom.xml' कहा जाता है। इसका उपयोग C#, Scala, Ruby आदि जैसी अन्य भाषाओं के लिए भी किया जा सकता है।

Maven फ्रेमवर्क का उपयोग करके, आप किसी भी प्रोजेक्ट में निम्नलिखित कार्यों को आसानी से प्रबंधित कर सकते हैं:

  • निर्माण चक्र
  • परियोजना प्रलेखन
  • रिपोर्ट की जाँच
  • स्क्रम्स प्रबंधन
  • जानकारी जारी की

Maven के बुनियादी उपयोग इस प्रकार हैं:

  • एक मानक निर्देशिका संरचना लागू करता है.
  • एक पुन: प्रयोज्य और रखरखाव में आसान परियोजना संरचना प्रदान करें।
  • पैकेज निर्भरताओं का समाधान करें.
  • एक कॉन्फ़िगरेशन प्रबंधन ढांचा प्रदान करें.

निर्भरता-समाधान की वह क्षमता ही वास्तव में एक Appium परियोजना की आवश्यकता है, क्योंकि Java ग्राहक एक श्रृंखला में जानकारी खींचता है Selenium ऐसी जार फाइलें जिन्हें कोई भी मैन्युअल रूप से डाउनलोड नहीं करना चाहता।

डाउनलोड Appium मावेन निर्भरताएँ

इससे पहले कि आप लिखना शुरू करें Appium Maven के साथ डिपेंडेंसी टेस्ट करने के लिए, आपको इसे डाउनलोड करना होगा। Appium मेवन निर्भरता — Appium JAR डाउनलोड फ़ाइल — से मेवन केंद्रीय रिपॉजिटरी वेबसाइटनीचे दिया गया स्क्रीनशॉट मेवन सेंट्रल पर जावा-क्लाइंट आर्टिफैक्ट लिस्टिंग को दर्शाता है, जहां प्रत्येक प्रकाशित संस्करण और उसका तैयार स्निपेट उपलब्ध है।

Appium Maven सेंट्रल रिपॉजिटरी सर्च पेज पर जावा-क्लाइंट आर्टिफैक्ट लिस्टिंग

या फिर नीचे बताए गए POM.xml आर्टिफैक्ट को सीधे जोड़ें:

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>3.4.1</version>
</dependency>

⚠️ संस्करण नोट: la 3.4.1 ऊपर दिया गया निर्देशांक मूल उदाहरण है और अभी भी ब्लॉक का सही आकार दर्शाता है। यह W3C वेबड्राइवर प्रोटोकॉल से पहले का है, इसलिए नए प्रोजेक्ट में संस्करण को अपडेट करना आवश्यक है। लिखते समय, मेवन सेंट्रल पर वर्तमान रिलीज़ यह है। 10.1.1, जिसकी ज़रुरत है Selenium 4.42.0 या बाद में।

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>10.1.1</version>
</dependency>

कृपया हमारे माध्यम से जाएँ मावेन ट्यूटोरियल Maven को कॉन्फ़िगर करने का तरीका जानने के लिए Eclipse.

Appium मेवन प्रोजेक्ट संरचना और आवश्यक निर्भरताएँ

Maven एक निश्चित लेआउट लागू करता है, और इसे जानने से इस वॉकथ्रू में आगे आने वाली अधिकांश उलझनों से बचा जा सकता है। जेनरेट किए गए प्रोजेक्ट में चार महत्वपूर्ण स्थान होते हैं:

  • पोम.एक्सएमएल — प्रोजेक्ट रूट पर स्थित प्रोजेक्ट ऑब्जेक्ट मॉडल, जहां प्रत्येक निर्भरता और प्लगइन घोषित किया जाता है।
  • src/मुख्य/जावा — एप्लिकेशन और सहायक क्लास।
  • src/test/java — टेस्ट क्लास, और बिल्ड चलाते समय श्योरफायर प्लगइन द्वारा स्कैन की जाने वाली एकमात्र डायरेक्टरी।
  • लक्ष्य — संकलित आउटपुट और परीक्षण रिपोर्ट, प्रत्येक बिल्ड पर पुनः उत्पन्न होती हैं।

RSI Appium java-client एकमात्र अनिवार्य निर्भरता है, क्योंकि यह घोषित करता है Selenium एपीआई, रिमोट-ड्राइवर और सपोर्ट आर्टिफैक्ट्स को ट्रांजिटिवली उपयोग किया जाता है। कई टीमें अभी भी पिन का उपयोग करती हैं। Selenium संस्करण को स्पष्ट रूप से एक ही स्थान पर प्रदर्शित करने के लिए, और एक टेस्ट रनर जोड़ें:

<dependencies>
  <dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>10.1.1</version>
  </dependency>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.42.0</version>
  </dependency>
</dependencies>

दोनों संस्करणों को संगत रखें। जावा-क्लाइंट रिलीज़ में यह बताया गया है। Selenium यह जिस रेंज को सपोर्ट करता है, और एक पुराने क्लाइंट को एक बिल्कुल नए क्लाइंट के साथ मिलाना Selenium रनटाइम पर NoSuchMethodError का सबसे आम कारण यही है। जावा-क्लाइंट रिपॉजिटरी यह दस्तावेज़ प्रत्येक रिलीज़ के लिए पेयरिंग को दर्शाता है।

परीक्षण अनुप्रयोग के साथ Appium और मेवन

निर्भरता स्थापित हो जाने के बाद, Eclipse नीचे दिया गया वर्कफ़्लो शुरू से एक चलाने योग्य प्रोजेक्ट बनाता है। कॉन्फ़िगरेशन के बाद Appium Java मेवन प्लग-इन में Eclipseकार्यक्षेत्र किसी भी परीक्षण के लिए तैयार है। Android .apk के साथ आवेदन Appium और मेवन, जैसा कि दिखाया गया है Appium नीचे मावेन परियोजना का उदाहरण दिया गया है।

चरण 1) इस चरण में,

  1. NEW पर जाएँ >> Maven प्रोजेक्ट चुनें
  2. अगले बटन पर क्लिक करें

जैसा कि यहां दिखाया गया है, नया प्रोजेक्ट विजार्ड मेवन प्रोजेक्ट को हाइलाइट करते हुए खुलता है।

Eclipse मेवन प्रोजेक्ट चयनित के साथ नया प्रोजेक्ट विज़ार्ड

चरण 2) फिर 'नया मेवन प्रोजेक्ट' विंडो में, ' दर्ज करेंAppium ग्रुप आईडी और आर्टिफैक्ट आईडी कॉलम में 'टेस्ट' दर्ज करें। इस चरण में, आपको निम्न जानकारी दर्ज करनी होगी:

  1. समूह आईडी
  2. विरूपण साक्ष्य आईडी
  3. संस्करण
  4. पैकेजिंग
  5. नाम और Descriptआयन
  6. अंत

पूरा किया गया नया मेवन प्रोजेक्ट फॉर्म नीचे दिए गए स्क्रीनशॉट जैसा दिखता है।

ग्रुप आईडी, आर्टिफैक्ट आईडी, वर्जन और पैकेजिंग भरी हुई एक नई मेवन प्रोजेक्ट विंडो खुलती है।

फ़िनिश बटन पर क्लिक करने से परिभाषित ग्रुप आईडी के अंतर्गत एक नई क्लास खुल जाएगी (Appiumपरीक्षण का नाम।

चरण 3) के साथ शुरू करने के लिए Appium स्क्रिप्ट लिखने के लिए, बाईं ओर के एक्सप्लोरर विंडो में 'src/main/java' पर राइट क्लिक करें। फिर New >> class चुनें। स्क्रिप्ट लिखें। Appium चयनित वर्ग के अंदर कोड.

उस क्लास को बनाने के लिए उपयोग किया जाने वाला कॉन्टेक्स्ट मेनू नीचे दिखाया गया है।

src/main/java पर राइट-क्लिक करने पर मेनू में New और Class विकल्प दिखाई देते हैं। Eclipse एक्सप्लोरर

चरण 4) इसी प्रोजेक्ट में, बाईं ओर के एक्सप्लोरर मेनू में pom.xml पर क्लिक करें। सभी डिपेंडेंसी डिफ़ॉल्ट रूप से 'pom.xml' टैब में दिखाई देंगी। नीचे दी गई छवि देखें।

pom.xml संपादक टैब में Eclipse हल की गई परियोजना निर्भरताओं को सूचीबद्ध करना

यदि डिफ़ॉल्ट pom.xml मौजूद नहीं है, तो बस सभी Maven कोड जोड़ दें। Appium निर्भरताएँ, उदाहरणtracMaven सेंट्रल रिपॉजिटरी वेबसाइट से लिया गया:

https://central.sonatype.com/artifact/io.appium/java-client

संपादित pom.xml के साथ Appium जोड़ी गई निर्भरताएँ नीचे दिखाई गई हैं।

pom.xml स्रोत दृश्य के बाद Appium जावा-क्लाइंट डिपेंडेंसी पेस्ट कर दी गई है

चरण 5) अब, बाएं एक्सप्लोरर में 'pom.xml' पर राइट क्लिक करें, या ' के लिए XML कोड पर राइट क्लिक करें।Appium'टेस्ट' प्रोजेक्ट पर क्लिक करें। फिर नीचे दिखाए अनुसार 'रन ऐज़ >> मेवन क्लीन' विकल्प पर क्लिक करें।

Eclipse रन ऐज़ सबमेनू में मेवन क्लीन विकल्प हाइलाइट किया गया है।

रन करते समय, आप सभी Maven-संबंधित jar फ़ाइलें और एक सफलता संदेश देख सकते हैं, जैसा कि नीचे दिए गए कंसोल आउटपुट में दिखाया गया है। इस प्रकार आप एक रन करते हैं। Appium Java Maven-कॉन्फ़िगर किए गए वातावरण में क्लाइंट Maven निर्भरता परीक्षण।

Eclipse कंसोल डाउनलोड की गई मेवन जार फ़ाइलों और बिल्ड की सफलता के संदेश को प्रदर्शित करता है।

कैसे चलाना है Appium मेवन कमांड के साथ परीक्षण

RSI Eclipse मेन्यू सुविधाजनक है, लेकिन उसी बिल्ड को बिल्ड सर्वर पर बिना किसी हस्तक्षेप के चलाना होगा, और वहाँ कमांड लाइन ही एकमात्र विकल्प है। pom.xml वाली फ़ोल्डर में एक टर्मिनल खोलें और इन कमांड का उपयोग करें।

mvn clean
mvn clean test
mvn clean install
mvn test -Dtest=LoginTest

इनमें से प्रत्येक का एक अलग काम है:

  • एमवीएन क्लीन को हटा देता है target इस डायरेक्टरी को इस तरह से बनाएं कि अगली बिल्ड में कुछ भी पुराना डेटा न बचे। यही कमांड है। Eclipse ऊपर दिए गए विवरण से ट्रिगर होते हैं।
  • एमवीएन स्वच्छ परीक्षण यह प्रोजेक्ट को कंपाइल करता है और टेस्ट क्लास को एग्जीक्यूट करता है। Maven Surefire प्लगइन इन्हें स्वचालित रूप से उठा लेता है। src/test/javaडिफ़ॉल्ट शामिल पैटर्न का उपयोग करते हुए Test*.java, *Test.java, *Tests.java और *TestCase.java.
  • mvn क्लीन इंस्टॉल यह परीक्षण चलाता है और फिर पैकेज किए गए आर्टिफैक्ट को आपके स्थानीय रिपॉजिटरी में रखता है, ताकि कोई अन्य प्रोजेक्ट उस पर निर्भर हो सके।
  • mvn test -Dtest=LoginTest डीबग करते समय यह रन को एक ही क्लास तक सीमित कर देता है।

दो बातें लोगों को भ्रमित कर देती हैं। पहली बात, Appium बिल्ड शुरू होने से पहले सर्वर चालू होना चाहिए और एक डिवाइस या एमुलेटर कनेक्ट होना चाहिए, क्योंकि मेवन इनमें से किसी को भी लॉन्च नहीं करता है — डिवाइस को सत्यापित करें। एशियाई विकास बैंक पहले जांच करें। दूसरा, परिणाम लिखे जाते हैं। target/surefire-reportsयह वह फ़ोल्डर है जिसे CI जॉब को आर्काइव करना चाहिए। श्योरफायर उपयोग मार्गदर्शिका यह कॉन्फ़िगरेशन विकल्पों को विस्तार से बताता है, और वही कमांड एक Appium सुइट से Jenkins.

सामान्य Appium Maven में आने वाली त्रुटियाँ और उन्हें ठीक करने के तरीके

अधिकांश विफलताएँ Appium मेवन सेटअप में आने वाली समस्याएं टेस्ट कोड के बजाय कुछ चुनिंदा, दोहराए जाने योग्य कारणों से उत्पन्न होती हैं। नीचे दी गई तालिका प्रत्येक समस्या को उसके सामान्य समाधान से दर्शाती है।

लक्षण संभावित कारण फिक्स
io.appium:java-client के लिए निर्भरताओं को हल नहीं किया जा सका गलत वर्शन स्ट्रिंग, या मेवन सेंट्रल तक नेटवर्क एक्सेस का अभाव Maven Central लिस्टिंग से कोऑर्डिनेट को सीधे कॉपी करें और बिल्ड को दोबारा चलाएं।
NoSuchMethodError या NoClassDefFoundError से Selenium कक्षा java-client और selenium-java के संस्करण असंगत हैं। मिलाओ Selenium संस्करण को जावा-क्लाइंट रिलीज़ द्वारा घोषित सीमा तक सीमित करें
टेस्ट कंपाइल तो हो जाते हैं लेकिन कोई भी रन नहीं होता। टेस्ट क्लास src/main/java में स्थित हैं, या क्लास का नाम Surefire include पैटर्न से मेल नहीं खाता है। उन्हें src/test/java फ़ोल्डर में ले जाएं और क्लास का नाम इस तरह रखें कि उसके अंत में Test आए।
पोर्ट 4723 पर कनेक्शन अस्वीकृत RSI Appium सर्वर नहीं चल रहा है शुरू करें Appium बिल्ड से पहले सर्वर
अमान्य या असमर्थित क्षमता आधुनिक ड्राइवर के साथ उपयोग किए जाने वाले पुराने क्षमता नाम Revवर्तमान देखें वांछित क्षमताएँ आपके प्लेटफ़ॉर्म के लिए
असमर्थित क्लास फ़ाइल प्रमुख संस्करण Maven द्वारा उपयोग किया जाने वाला JDK, pom.xml में मौजूद कंपाइलर स्तर के JDK से भिन्न होता है। maven.compiler.source और target प्रॉपर्टी को अपने इंस्टॉल किए गए फॉर्मेट के साथ अलाइन करें। JDK

जब बिल्ड विफल हो जाए, तो मेवन द्वारा प्रिंट की गई अंतिम त्रुटि के बजाय पहली त्रुटि पढ़ें। बाद की पंक्तियाँ आमतौर पर पहले अनुपलब्ध आर्टिफैक्ट के परिणाम होती हैं।

अक्सर पूछे जाने वाले प्रश्न

पुराने ट्यूटोरियल से कॉपी किए गए संस्करण के बजाय मेवन सेंट्रल पर सूचीबद्ध नवीनतम रिलीज़ का उपयोग करें। लिखते समय यह 10.1.1 है, जो अपेक्षा करता है Selenium क्लासपाथ पर 4.42.0 या उसके बाद का संस्करण।

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

कोपायलट एक पंक्ति की टिप्पणी से groupId, artifactId और version तत्वों को पूरा करता है। यह अक्सर एक पुराना संस्करण संख्या सुझाता है, इसलिए फ़ाइल को कमिट करने से पहले Maven Central के साथ निर्देशांक की पुष्टि करें।

सख्ती से नहीं। जावा-क्लाइंट इसे घोषित करता है। Selenium कलाकृतियों को पारगमन रूप से। कई टीमें अभी भी सेलेनियम-जावा को स्पष्ट रूप से पिन करती हैं ताकि संस्करण दिखाई दे और अपग्रेड आकस्मिक होने के बजाय जानबूझकर किए जाएं।

दोनों एक ही प्रकार के आर्टिफैक्ट्स को रिजॉल्व करते हैं। मेवन डिक्लेरेटिव XML का उपयोग करता है और उन टीमों के लिए उपयुक्त है जो एक निश्चित लाइफसाइकिल चाहती हैं। Gradle स्क्रिप्ट में Groovy या फिर कोटलिन का उपयोग करता है और धीरे-धीरे बिल्ड करता है, जो बड़े मल्टी-मॉड्यूल रिपॉजिटरी में मददगार होता है।

src/test/java में। Surefire केवल बिल्ड के दौरान उस डायरेक्टरी को स्कैन करता है, इसलिए src/main/java में मौजूद क्लास कंपाइल तो हो जाती है लेकिन कभी एक्जीक्यूट नहीं होती, जो एक तरह से चुपचाप पास होने वाले सूट की तरह दिखती है।

नहीं। मेवन केवल जार फ़ाइलों को हल करता है और परीक्षण चलाता है। प्रारंभ करें Appium पहले सर्वर से किसी डिवाइस या एमुलेटर को कनेक्ट करें, या अपने टेस्ट सेटअप मेथड या सीआई पाइपलाइन स्टेप से सर्वर लॉन्च करें।

रिपॉजिटरी देखें, शुरू करें Appium सर्वर और डिवाइस पर, फिर mvn clean test कमांड चलाएँ। Archiबिल्ड आर्टिफैक्ट के रूप में ve target/surefire-reports का उपयोग करें ताकि एजेंट के नष्ट होने के बाद भी विफलताएं पठनीय बनी रहें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: