मुझे मोबाइल वेब अनुप्रयोगों का परीक्षण करने में एपियम बहुत बोझिल पाया गया है क्योंकि इस तथ्य के कारण स्पर्श कार्य अच्छी तरह से समर्थित नहीं हैं। जावा स्टैंडपॉइंट से, मुझे एपियम से बात करने के लिए दो मुख्य विकल्प मिल गए हैं: Selenium RemoteWebDriver और Appium Java client से एपियम ड्रिवर।
सेलेनियम RemoteWebDriver
अब तक मैं एक Android डिवाइस सेलेनियम RemoteWebDriver और RemoteTouchScreen के प्रयोग पर हमारी वेब ऐप्स का परीक्षण करने में सक्षम है। सेलेनियम 3.6.0 और 1.6.5 Appium का उपयोग करना, मैं एक तत्व क्लिक करने के लिए 4 अलग अलग तरीकों का परीक्षण किया है:
webDriver.findElement(locator).click();
new Actions(webDriver).moveToElement(findElement(locator)).click().perform();
new RemoteTouchScreen(new RemoteExecuteMethod(webDriver)).singleTap(((Locatable)webDriver.findElement(locator)).getCoordinates());
new TouchActions(webDriver).singleTap(locator);
एंड्रॉयड पर, पहले 3 तरीके काम है, लेकिन 4 एक 'समर्थित नहीं' अपवाद फेंकता है। मैंने क्लिक/टैप्स के लिए विधि 1 और जेस्चर के लिए 3 का उपयोग करने का विकल्प चुना है।
आईओएस पर, विधियों 1, 2 और 4 'अभी तक समर्थित नहीं है' अपवाद फेंक दें और विधि 3 कुछ भी नहीं करता है। चूंकि मैं समस्या निवारण के लिए समय निवेश करने के लिए तैयार नहीं था, इसलिए हम उम्मीद कर रहे हैं कि ऐपियम में सुधार होगा और आईओएस बेहतर होगा।
Appium जावा ग्राहक
मेरे Appium जावा ग्राहक (संस्करण 5.0.4) के साथ अनुभव भी बदतर अभी भी था। स्पर्श कार्यों को कैसे करें, इंटरवब्स पर चारों ओर उड़ने वाले कुछ कोड स्निपेट्स पर एक व्यापक ट्यूटोरियल प्रतीत नहीं होता है। तो इस सवाल का मेरा जवाब एक बनाने का प्रयास है।
पहले ड्राइवर का दृष्टांत और एक पृष्ठ पर नेविगेट:
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
इस में जो परिणाम: org.openqa.selenium.WebDriverException: पद्धति नहीं है
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Samsung Android S8");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("platformName", "Android");
MobileDriver appiumDriver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
appiumDriver.navigate().to("https://duckduckgo.com");
फिर एक स्पर्श क्रिया को निष्पादित अभी तक लागू किया गया है
this forum post से मैंने यह अनुमान लगाया कि मुझे टी को करने में सक्षम होने के लिए संदर्भ स्विच करना है आउच क्रियाएं प्रयास दो:
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
यह काम करता है। हालांकि, केवल By.id चयनकर्ता के लिए। मुझे कोई अन्य चयनकर्ता नहीं मिला जो NATIVE_APP संदर्भ में काम करता है।और चूंकि हमारी वेबसाइट के अधिकांश तत्वों में एक आईडी की कमी है, इसलिए मुझे एक xpath चयनकर्ता की आवश्यकता है। प्रयास तीन:
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.xpath("//*[@id=\"search_form_input_homepage\"]"))).perform();
कौन सा में हुई: org.openqa.selenium.NoSuchElementException: एक तत्व दिए गए खोज मापदंडों का उपयोग कर पृष्ठ पर ढूंढा नहीं जा सका।
अन्य कामकाज जिन्हें मैं सोच सकता था, जैसे क्रोमियम संदर्भ में वेबलेमेंट का चयन करना और फिर NATIVE_APP संदर्भ में स्थान लेना एक विकल्प नहीं है क्योंकि समन्वय प्रणाली भिन्न होती है (ब्राउज़र पिक्सल बनाम स्क्रीन पिक्सेल)।
और प्रत्येक स्पर्श कार्रवाई के बाद डिफ़ॉल्ट क्रोमियम संदर्भ पर वापस लौटना न भूलें। तो केवल काम कर उदाहरण की पूरी कोड हो जाता है:
try {
appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
} finally {
appiumDriver.context("CHROMIUM");
}
इस बात मेरी निष्कर्ष है कि Appium साथ मोबाइल वेब अनुप्रयोगों का परीक्षण अभी तक काफी वहाँ नहीं है पर।
https://github.com/appium/appium/blob/master/docs/en/mobile-web.md – sibidiba
जिथब के लिंक टूटा हुआ है, कृपया –
को ठीक करें कृपया यह आधिकारिक दस्तावेज़ देखें: http: // appium। आईओ/डॉक्स/एन/लेखन-रनिंग-एपियम/वेब/मोबाइल-वेब/ – eeadev