switchContext
एक विशिष्ट वेबव्यू name, title, या url का उपयोग करके एक विशिष्ट संदर्भ (context) में स्विच करें।
यह विधि डिफ़ॉल्ट Appium context कमांड को हाइब्रिड मोबाइल एप्लिकेशन में नेटिव और वेबव्यू संदर्भों के बीच स्विच करने के लिए अधिक लचीलापन और सटीकता प्रदान करके बढ़ाती है।
संदर्भ कैसे काम करते हैं
हाइब्रिड ऐप्स और वेबव्यू के बारे में अवलोकन के लिए, हाइब्रिड ऐप्स दस्तावेज़ीकरण देखें।
नीचे switchContext कमांड कैसे सामान्य चुनौतियों का समाधान करती है, इसका सारांश है:
Android की चुनौतियाँ
- वेबव्यू में अक्सर कई पेज (ब्राउज़र टैब के समान) होते हैं। सही पेज की पहचान करने के लिए अतिरिक्त मेटाडेटा जैसे
titleयाurlकी आवश्यकता होती है, जो डिफ़ॉल्ट Appium विधियों द्वारा प्रदान नहीं किया जाता है। - डिफ़ॉल्ट Appium विधियाँ केवल बुनियादी संदर्भ नाम (जैसे,
WEBVIEW_{packageName}) वापस करती हैं, वेबव्यू के भीतर सामग्री या पेजों के बारे में विवरण नहीं देती हैं। - Android पर संदर्भ स्विच करने में दो चरण शामिल हैं, जिन्हें इस विधि द्वारा स्वचालित रूप से संभाला जाता है:
WEBVIEW_{packageName}का उपयोग करके वेबव्यू संदर्भ में स्विच करें।switchToWindowविधि का उपयोग करके वेबव्यू के भीतर उपयुक्त पेज का चयन करें।
iOS की चुनौतियाँ
- वेबव्यू को जेनेरिक आईडी (जैसे,
WEBVIEW_{id}) द्वारा पहचाना जाता है, जो सामग्री या उस ऐप स्क्रीन के बारे में जानकारी प्रदान नहीं करते हैं जिनसे वे संबंधित हैं। - इंटरैक्शन के लिए सही वेबव्यू का निर्धारण अक्सर प्रयास और त्रुटि की आवश्यकता होती है।
switchContext विधि विस्तृत मेटाडेटा (जैसे, title, url, और दृश्यता) प्राप्त करके इस प्रक्रिया को सरल बनाती है, ताकि सटीक और विश्वसनीय संदर्भ स्विचिंग सुनिश्चित हो सके।
इस विधि का उपयोग क्यों करें?
- सरलीकृत स्विचिंग: यदि आप वांछित वेबव्यू का
titleयाurlजानते हैं, तो यह विधिgetContextsके लिए अतिरिक्त कॉल याswitchContext({id})औरgetTitle()जैसी कई विधियों को संयोजित करने की आवश्यकता को समाप्त करती है। - स्वचालित संदर्भ मिलान: निम्न के आधार पर संदर्भ के लिए सर्वोत्तम मिलान खोजता है:
- प्लेटफॉर्म-विशिष्ट पहचानकर्ता (
bundleIdiOS के लिए,packageNameAndroid के लिए)। titleयाurlके लिए सटीक या आंशिक मिलान (स्ट्रिंग्स और रेगुलर एक्सप्रेशन दोनों का समर्थन करता है)।- Android-विशिष्ट जांच यह सुनिश्चित करने के लिए कि वेबव्यू अटैच्ड और दृश्यमान हैं।
- प्लेटफॉर्म-विशिष्ट पहचानकर्ता (
- बारीक नियंत्रण: कस्टम रीट्राई अंतराल और टाइमआउट (केवल Android) आपको वेबव्यू इनिशियलाइजेशन में देरी को संभालने की अनुमति देते हैं।
- डिफॉल्ट Appium विधि एक्सेस: यदि आवश्यक हो, तो आप
driver.switchAppiumContext()के माध्यम से डि फॉल्ट AppiumswitchContextकमांड का उपयोग कर सकते हैं।
नोट्स और सीमाएँ
- यदि वांछित वेबव्यू का
titleयाurlज्ञात है, तो यह विधि अतिरिक्तgetContextsकॉल के बिना मैचिंग संदर्भ को स्वचालित रूप से ढूंढ और स्विच कर सकती है। - Android-विशिष्ट विकल्प जैसे
androidWebviewConnectionRetryTimeऔरandroidWebviewConnectTimeoutiOS पर लागू नहीं होते हैं। - डीबगिंग में सहायता के लिए संदर्भ-मिलान विफलताओं के कारणों को लॉग करता है।
- इनपुट के रूप में एक ऑब्जेक्ट का उपयोग करते समय,
titleयाurlमें से एक आवश्यक है।