Appium एक क्रॉस-प्लेटफ़ॉर्म फ्रेमवर्क है जो मोबाइल, वेब और डेस्कटॉप एप्लिकेशन के परीक्षण को स्वचालित करने के लिए WebDriver प्रोटोकॉल पर आधारित है। यह आपको किसी भी प्रोग्रामिंग भाषा में परीक्षण लिखने और कोड बदले बिना Android, iOS और Windows पर चलाने की अनुमति देता है। Appium Foundation, 2025 के अनुसार, WebDriver प्रोटोकॉल विभिन्न प्लेटफ़ॉर्म पर एप्लिकेशन के साथ बातचीत के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है।
मुख्य बातें
Appium एक ओपन-सोर्स फ्रेमवर्क है जो मोबाइल एप्लिकेशन परीक्षण को स्वचालित करने के लिए क्लाइंट-सर्वर आर्किटेक्चर पर बनाया गया है। Appium सर्वर क्लाइंट से WebDriver प्रोटोकॉल के माध्यम से कमांड प्राप्त करता है और उन्हें मूल ड्राइवरों को सौंपता है: iOS के लिए XCUITest, Android के लिए UiAutomator2 और Windows के लिए WinAppDriver।
Appium 2013 में बनाया गया था और तब से यह क्रॉस-प्लेटफ़ॉर्म परीक्षण के लिए उद्योग मानक बन गया है। परियोजना Appium Foundation द्वारा प्रबंधित की जाती है और बड़ी कंपनियों द्वारा समर्थित है: Sauce Labs, HeadSpin, Microsoft। दुनिया भर में हर महीने 500 हजार से अधिक परीक्षक Appium का उपयोग करते हैं।
Appium तीन प्रकार के एप्लिकेशन का समर्थन करता है: मूल (iOS, Android, Windows), मोबाइल वेब ब्राउज़र (Safari, Chrome) और हाइब्रिड एप्लिकेशन (मूल शेल के अंदर WebView)। प्रत्येक प्रकार अपना संदर्भ उपयोग करता है: NATIVE_APP, WEBVIEW या CHROMIUM।
Appium आर्किटेक्चर चार परतों से मिलकर बना है: क्लाइंट कोड → Appium क्लाइंट लाइब्रेरी → Appium सर्वर → मूल ड्राइवर। क्लाइंट लाइब्रेरी WebDriver प्रोटोकॉल को लागू करती है और सर्वर को HTTP अनुरोध भेजती है। सर्वर उन्हें प्लेटफ़ॉर्म के मूल ड्राइवर कमांड में परिवर्तित करता है।
WebDriver ब्राउज़र स्वचालन के लिए W3C मानक है, जिसे Appium द्वारा मोबाइल उपकरणों के लिए अनुकूलित किया गया है। प्रत्येक क्रिया — तत्व खोज, टैप, टेक्स्ट इनपुट — सर्वर को HTTP अनुरोध के रूप में भेजी जाती है। उदाहरण के लिए, POST /session/{id}/element एक नया परीक्षण सत्र बनाता है।
प्रत्येक परीक्षण Desired Capabilities ऑब्जेक्ट के माध्यम से सत्र बनाकर शुरू होता है। यह निर्दिष्ट करता है: platformName, deviceName, appPath, automationName और अतिरिक्त पैरामीटर। Appium इस डेटा का उपयोग उपयुक्त मूल ड्राइवर और डिवाइस कॉन्फ़िगरेशन का चयन करने के लिए करता है।
# Android के लिए Desired Capabilities उदाहरण
desired_caps = {
'platformName': 'Android',
'deviceName': 'Pixel_4',
'app': '/path/to/app.apk',
'automationName': 'UiAutomator2',
'appPackage': 'com.example.app',
'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
Appium npm के माध्यम से स्थापित किया जाता है: npm install -g appium। स्थापना के बाद, आपको प्रत्येक प्लेटफ़ॉर्म के लिए मूल ड्राइवर कॉन्फ़िगर करने की आवश्यकता है: appium driver install xcuitest और appium driver install uiautomator2। iOS के लिए Xcode और Android के लिए Android SDK आवश्यक है।
Appium Inspector UI तत्वों के निरीक्षण के लिए एक ग्राफिकल टूल है। यह चल रहे Appium सर्वर से जुड़ता है और UI घटकों, उनकी विशेषताओं और लोकेटरों का पदानुक्रम दिखाता है। Inspector परीक्षण लिखने से पहले सेलेक्टर को सत्यापित करने की अनुमति देता है।
Appium सर्वर वैकल्पिक पैरामीटर के साथ appium कमांड द्वारा शुरू किया जाता है: पोर्ट, पता, लॉगिंग। डिफ़ॉल्ट रूप से, सर्वर पोर्ट 4723 पर सुनता है। कई उपकरणों पर समानांतर निष्पादन के लिए विभिन्न पोर्ट या Appium क्लस्टर का उपयोग किया जाता है।
# लॉगिंग के साथ Appium सर्वर प्रारंभ करना
appium \
--port 4723 \
--log-level debug \
--use-plugins images \
--base-path /wd/hub
Appium परीक्षण कोड संगठन के लिए Page Object पैटर्न का उपयोग करते हैं। प्रत्येक एप स्क्रीन को तत्व लोकेटर और इंटरैक्शन विधियों के साथ एक अलग क्लास द्वारा वर्णित किया जाता है। Page Object Model इंटरफ़ेस बदलने पर परीक्षण रखरखाव को सरल बनाता है और परीक्षण परिदृश्यों के बीच सेलेक्टर का पुन: उपयोग करता है।
Appium कई तत्व खोज रणनीतियों का समर्थन करता है: id, xpath, accessibilityId, className, androidUIAutomator और iOSClassChain। सबसे पसंदीदा accessibilityId और id हैं — वे लेआउट परिवर्तनों के बावजूद स्थिर हैं। XPath का उपयोग केवल तब किया जाना चाहिए जब अन्य लोकेटर उपलब्ध न हों।
// लॉगिन स्क्रीन के लिए Page Object
public class LoginPage {
private AppiumDriver driver;
private MobileElement emailField =
(MobileElement) driver.findElement(MobileBy.AccessibilityId("emailInput"));
private MobileElement passwordField =
(MobileElement) driver.findElement(MobileBy.AccessibilityId("passwordInput"));
private MobileElement loginButton =
(MobileElement) driver.findElement(MobileBy.AccessibilityId("loginButton"));
public void login(String email, String password) {
emailField.sendKeys(email);
passwordField.sendKeys(password);
loginButton.click();
}
}
Appium TouchAction क्लास या W3C Actions API के माध्यम से जटिल जेस्चर का समर्थन करता है: स्वाइप, मल्टी-टच, लॉन्ग प्रेस, तत्व तक स्क्रॉल। नए W3C Actions API की सिफारिश नई परियोजनाओं के लिए की जाती है क्योंकि यह मानकीकृत है और विभिन्न प्लेटफ़ॉर्म संस्करणों पर अधिक स्थिर रूप से काम करता है।
Appium की तुलना अक्सर Detox, XCUITest और Espresso से की जाती है। Appium का मुख्य लाभ क्रॉस-प्लेटफ़ॉर्म क्षमता है: एक परीक्षण बिना बदलाव के iOS और Android पर चलाया जा सकता है। हालाँकि, Detox React Native के लिए बेहतर सिंक्रनाइज़ेशन प्रदान करता है, और XCUITest/Espresso मूल परीक्षणों के लिए तेज़ निष्पादन प्रदान करते हैं।
Appium उन परियोजनाओं के लिए उपयुक्त है जिन्हें iOS, Android और वेब के लिए एकल फ्रेमवर्क की आवश्यकता होती है। यह उन टीमों में अपरिहार्य है जहाँ परीक्षक Java या Python में लिखते हैं। कई E2E परीक्षणों वाली React Native परियोजनाओं के लिए, स्वचालित सिंक्रनाइज़ेशन के कारण Detox पर विचार करें।
| फ्रेमवर्क | दृष्टिकोण | गति | क्रॉस-प्लेटफ़ॉर्म |
|---|---|---|---|
| Appium | ब्लैक-बॉक्स | मध्यम | iOS, Android, Windows |
| Detox | ग्रे-बॉक्स | उच्च | iOS + Android (React Native) |
| XCUITest | व्हाइट-बॉक्स | उच्च | केवल iOS |
Appium Grid एक साथ कई उपकरणों पर समानांतर परीक्षण चलाने के लिए एक एक्सटेंशन है। Appium Grid Selenium Grid पर बनाया गया है और कई Appium सर्वरों में परीक्षण वितरित करने की अनुमति देता है, प्रत्येक अपने उपकरणों या एमुलेटर के सेट का प्रबंधन करता है। यह बड़ी परियोजनाओं के लिए महत्वपूर्ण है जहाँ एकल उपकरण पर रिग्रेशन परीक्षण में घंटों लगते हैं — Grid समय को नोड्स की संख्या के अनुपात में मिनटों तक कम कर देता है।
Grid कॉन्फ़िगरेशन उपकरणों के साथ नोड्स का वर्णन करने वाली JSON कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। प्रत्येक नोड निर्दिष्ट करता है: सर्वर पोर्ट, प्लेटफ़ॉर्म के साथ उपकरणों की सूची, OS संस्करण और सत्रों की अधिकतम संख्या। Hub मुक्त नोड्स में परीक्षण वितरित करता है, अधिकतम बुनियादी ढाँचा उपयोग सुनिश्चित करता है।
{
"capabilities": [
{
"browserName": "android",
"platformName": "Android",
"deviceName": "Pixel_4",
"platformVersion": "14.0",
"maxInstances": 2
}
],
"configuration": {
"port": 4724,
"registerCycle": 5000
}
}
यदि आपका अपना डिवाइस बुनियादी ढाँचा उपलब्ध नहीं है, तो क्लाउड सेवाएँ हैं: Sauce Labs, BrowserStack, LambdaTest। वे क्लाउड में सैकड़ों वास्तविक उपकरण और एमुलेटर प्रदान करते हैं। Appium के साथ एकीकरण न्यूनतम है: बस localhost के बजाय Desired Capabilities में क्लाउड हब URL और क्रेडेंशियल निर्दिष्ट करें।
Appium TestNG (Java) या pytest-xdist (Python) का उपयोग करके समानांतर परीक्षण निष्पादन का समर्थन करता है। समांतरीकरण के लिए प्रत्येक सत्र के लिए अद्वितीय पोर्ट और पृथक परीक्षण डेटा की आवश्यकता होती है। प्रत्येक थ्रेड एक अलग उपकरण या एमुलेटर पर अपना स्वयं का Appium सत्र शुरू करता है। क्लाउड सेवाओं का उपयोग करते समय, समांतरीकरण स्वचालित है — प्लेटफ़ॉर्म उपलब्ध उपकरणों में परीक्षण वितरित करता है और पूरा होने के बाद उन्हें मुक्त करता है।
Appium के साथ समस्याओं का सामना करने पर, पहला कदम सर्वर लॉग (appium --log-level debug) की जाँच करना है। सामान्य त्रुटियाँ: पोर्ट व्यस्त है (दूसरा --port निर्दिष्ट करें), असंगत ड्राइवर संस्करण, लापता Android SDK या Xcode। iOS के लिए, सुनिश्चित करें कि WebKitAgent चल रहा है और सिम्युलेटर तक पहुंच है।
यदि Appium को तत्व नहीं मिलता है, तो जाँच करें: क्या संदर्भ सही है (NATIVE_APP बनाम WEBVIEW), क्या तत्व स्क्रीन पर दिखाई दे रहा है, क्या इसे स्क्रॉल करने की आवश्यकता है, और क्या लोकेटर सही है। परीक्षण में डालने से पहले इंटरैक्टिव खोज और XPath अभिव्यक्तियों की जाँच के लिए Appium Inspector का उपयोग करें। WebDriverWait के माध्यम से तत्व दृश्यता की प्रतीक्षा सक्षम करना भी सहायक है — यह धीमी UI लोडिंग के साथ सिंक्रनाइज़ेशन समस्याओं को हल करता है।
अनुचित सत्र समाप्ति Appium परीक्षण अस्थिरता का एक सामान्य कारण है। finally ब्लॉक में या AutoCloseable के माध्यम से हमेशा ड्राइवर बंद करें। विफलताओं के मामले में, जबरन driver.quit() का उपयोग करें। iOS के लिए, सुनिश्चित करें कि WebKitAgent (WDA) सत्रों के बीच पुनरारंभ होता है, अन्यथा सत्र नहीं बनाया गया त्रुटि हो सकती है। CI में सत्र स्थिति की निगरानी के लिए, Appium Dashboard प्लगइन कनेक्ट करना सुविधाजनक है, जो वास्तविक समय में सभी चल रहे परीक्षणों की स्थिति दिखाता है।
परीक्षण स्थिरता में सुधार के लिए, उपयोग करें: shouldTerminateApp (परीक्षणों के बीच ऐप समाप्त करें), noReset (सत्रों के बीच डेटा संरक्षित करें), autoGrantPermissions (सिस्टम डायलॉग को स्वचालित रूप से अनुमति दें)। डेवलपर विकल्पों के माध्यम से डिवाइस पर एनिमेशन बंद करने की भी सिफारिश की जाती है।
अक्सर पूछे जाने वाले प्रश्न
Appium क्लाइंट लाइब्रेरी के माध्यम से सभी लोकप्रिय भाषाओं का समर्थन करता है: Java, Python, JavaScript, Ruby, C#, PHP और Kotlin। प्रत्येक लाइब्रेरी एक ही WebDriver प्रोटोकॉल को लागू करती है, जिससे आप किसी भी भाषा में क्रॉस-प्लेटफ़ॉर्म परीक्षण लिख सकते हैं।
नहीं, Appium वास्तविक उपकरणों और एमुलेटर और सिम्युलेटर दोनों के साथ काम करता है। Android के लिए Android Studio एमुलेटर का उपयोग किया जाता है, iOS के लिए Xcode सिम्युलेटर का। वास्तविक उपकरण केवल हार्डवेयर फ़ंक्शन के परीक्षण के लिए आवश्यक हैं: सेंसर, NFC, कैमरा।
Appium 2 को प्लगइन्स और अलग ड्राइवरों के साथ मॉड्यूलर आर्किटेक्चर के साथ पूरी तरह से फिर से लिखा गया है। Appium 1 में, सभी ड्राइवर सर्वर में बनाए गए थे। Appium 2 ड्राइवर स्थापित करने के लिए appium driver install और प्लगइन्स के लिए appium plugin install कमांड का उपयोग करता है।
Appium खोज रणनीतियों का उपयोग करता है: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator और By.iOSClassChain। गति के लिए, accessibilityId का उपयोग करने की सिफारिश की जाती है — यह स्थिर है और लेआउट परिवर्तनों पर निर्भर नहीं करता है।
हाँ, Appium मोबाइल ब्राउज़र के परीक्षण का समर्थन करता है — iOS पर Safari और Android पर Chrome। इसके लिए WEBVIEW या CHROMIUM संदर्भ का उपयोग किया जाता है। परीक्षण Selenium के समान मानक WebDriver के माध्यम से ब्राउज़र में चलते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें