कैसे लिखने के लिए Appium परीक्षण कोड-आपका पूरा गाइड 2020

Appium परीक्षण ट्यूटोरियल
Appium परीक्षण ट्यूटोरियल

हम चर्चा करेंगे कि कैसे लिखना है  Appium परीक्षण इस ट्यूटोरियल में स्क्रिप्ट। हम सिम्युलेटर और वास्तविक उपकरणों पर अपने अनुप्रयोगों का परीक्षण कर सकते हैं। Appium एंड्रॉइड और iOS दोनों प्लेटफार्मों का समर्थन करता है।

शामिल विषय :

एंड्रॉइड में ऐप पैकेज और गतिविधि कैसे ढूंढें

एंड्रॉइड डिवाइसों में आपके ऐपियम परीक्षण स्क्रिप्ट को चलाने के लिए, हमें वांछित क्षमताओं के रूप में ऐप पैकेज और ऐप गतिविधि को पास करना होगा। एप्लिकेशन गतिविधि और ऐप पैकेज प्राप्त करने के कुछ तरीके हैं। हम यहां इन पर चर्चा करेंगे। इस उदाहरण के लिए, हम संपर्क ऐप चुनेंगे। गतिविधि और ऐप पैकेज प्राप्त करने के लिए कृपया नीचे दिए गए चरणों का पालन करें।

विंडोज के लिए

  • प्रकार "एडीबी उपकरणों"संलग्न उपकरणों या एमुलेटर की जांच करने के लिए
  • एक बार जब आपका डिवाइस इसे खोलने के लिए संपर्क ऐप पर टैप संलग्न हो जाता है।
  • एप्लिकेशन गतिविधि और पैकेज प्राप्त करने के लिए कृपया नीचे दिए गए आदेश टाइप करें
adb shell dumpsys window 
| find -E mCurrentFocus

मैक / लिनक्स के लिए

  • प्रकार "एडीबी उपकरणों"संलग्न उपकरणों या एमुलेटर की जांच करने के लिए
  • एक बार जब आपका डिवाइस इसे खोलने के लिए संपर्क ऐप पर टैप संलग्न हो जाता है।
  • एप्लिकेशन गतिविधि और पैकेज प्राप्त करने के लिए कृपया नीचे दिए गए आदेश टाइप करें
adb shell dumpsys window 
| grep mCurrentFocus
ऐप पैकेज / गतिविधि कैसे जोड़ें
ऐप पैकेज / गतिविधि कैसे जोड़ें

Appium परीक्षण के लिए अपनी पहली परियोजना कैसे बनाएं

Appium परीक्षण परियोजना बनाने के लिए, हमें Maven, TestNG, और Appium Java, क्लाइंट की आवश्यकता है। हम नीचे विस्तार से इस पर चर्चा करेंगे।

शर्त

  • मेवn
  • जोड़ना टेस्टएनजी एक मावेन निर्भरता के रूप में
  • Appium जावा क्लाइंट जोड़ें

मावेन परियोजना कैसे बनाएं

Appium परीक्षण के लिए एक मावेन प्रोजेक्ट बनाने के लिए, कृपया फ़ाइल पर क्लिक करें और नया> प्रोजेक्ट चुनें।

इंटेलीज में एक परियोजना बनाना
एक परियोजना का निर्माण

उसके बाद, मेवेन का चयन करें और अगला पर क्लिक करें

Maven चुनें और next पर क्लिक करें
Maven चुनें और नेक्स्ट पर क्लिक करें

यह Groupid और Artifactid के लिए पूछेगा। कृपया समान प्रदान करें। कृपया संदर्भ के लिए नीचे की छवि देखें।

मावेन विरूपण साक्ष्य आईडी, समूह आईडी
Maven के लिए GroupId, Artifact id प्रदान करते हैं

अब प्रोजेक्ट नाम सेलेक्ट करें और फिनिश पर क्लिक करें।

परियोजना का नाम
प्रोजेक्ट का नाम जोड़ें
मावेन निर्भरता कैसे जोड़ें
मावेन निर्भरता को कैसे जोड़ा जाए

हमें आपके आवेदन की पुष्टि के लिए pom.xml में testNG निर्भरता को जोड़ना होगा। उपरोक्त छवि में दिखाए अनुसार कृपया अपने pom.xml में नीचे निर्भरताएं जोड़ें।

<dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>
      
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>7.2.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

वांछित योग्यताएं Appium परीक्षण

Appium परीक्षण में, हमें उपकरणों के साथ बातचीत करने के लिए वांछित क्षमताओं की आवश्यकता होती है। वांछित क्षमताएं Android / iOS उपकरणों के साथ बातचीत करने के लिए JSON प्रारूप में एन्कोडेड की-वैल्यू पेयर के रूप में पैरामीटर भेजे जाते हैं। नया सत्र शुरू होने पर Appium क्लाइंट इसकी जानकारी Appium सर्वर को भेजते हैं। प्रत्येक Appium क्लाइंट अपने तरीके से क्षमताओं का निर्माण करता है। लेकिन अंत में, सभी मापदंडों को सर्वर में एक JSON प्रारूप में भेजा जाएगा। वांछित क्षमताओं के बारे में अधिक जानकारी के लिए, इस पर क्लिक करें संपर्क.

एंड्रॉइड के लिए वांछित क्षमताएं कैसे जोड़ें

अपने Appium सर्वर के साथ अपने Android उपकरणों के साथ बातचीत करने के लिए, हमें विशिष्ट वांछित क्षमताओं को पास करना होगा। यह संलग्न Android उपकरणों को विशिष्ट रूप से पहचानने के लिए Appium सर्वर की मदद करेगा। नीचे सूचीबद्ध हैं:

1. आपको कुंजी को पास करना होगामंच का नाम"या" MobileCapabilityType।PLATFORM_NAME"और मान"एंड्रॉयड"

2. आपको "platformVersion" या "MobileCapabilityType" कुंजी को पास करना होगा।PLATFORM_VERSION"और मान" 23 "के रूप में [यह मान Android संस्करण का एपीआई संस्करण है]

3. आपको कुंजी को पास करना होगायन्त्र का नामया "MobileCapabilityType।यन्त्र का नाम"और मान"Nexus 5X"" कृपया अपने डिवाइस नाम के साथ मूल्य को अपडेट करें]

4. आपको कुंजी को पास करना होगास्वचालन नामया "MobileCapabilityType।AUTOMATION_NAME"और मान"UIAutomator2“आपको उपयोग करना होगा यूआईऑटोमेटर if UIAutomator2 काम नहीं करता]

5. आपको कुंजी को "यूडिड" या "मोबाइल कैपेबिलिटी टाइप" के रूप में पास करना होगा।तुमने किया"और मान"एमुलेटर -5554"

6. आपको कुंजी को पास करना होगाऐप पैकेज"और मान"com.android.contacts"आपके ऐप के अपडेट ऐप पैकेज]

7. आपको कुंजी को पास करना होगाऐप गतिविधि"और मान"com.android.contacts.activities.PeopleActivity"[अपने ऐप की ऐप गतिविधि को अपडेट करें]

8. कृपया विवरण के लिए नीचे दी गई छवि देखें:

Android के लिए वांछित क्षमताओं को जोड़ना
Android के लिए वांछित क्षमताओं को जोड़ना

कैसे iPhone के लिए वांछित क्षमताओं को जोड़ने के लिए

अपने Appium सर्वर के साथ अपने Android उपकरणों के साथ बातचीत करने के लिए, हमें विशिष्ट वांछित क्षमताओं को पास करना होगा। यह संलग्न Android उपकरणों को विशिष्ट रूप से पहचानने के लिए Appium सर्वर की मदद करेगा। नीचे सूचीबद्ध हैं:

1. आपको कुंजी को पास करना होगामंच का नाम"या" MobileCapabilityType।PLATFORM_NAME"और मान"आईओएस"

2. आपको "platformVersion" या "MobileCapabilityType" कुंजी को पास करना होगा।PLATFORM_VERSION"और मान"13.6[[अपने ओएस संस्करण की जाँच करें]

3. आपको कुंजी को पास करना होगायन्त्र का नामया "MobileCapabilityType।यन्त्र का नाम"और मान"iPhone 11 प्रो मैक्स"" कृपया अपने डिवाइस नाम के साथ मूल्य को अपडेट करें]

4. आपको कुंजी को पास करना होगास्वचालन नामया "MobileCapabilityType।AUTOMATION_NAME"और मान"XCUITest"[ उपयोग XCUITest(iOS 9.3 और ऊपर) या यूआईऑटोमेशन(iOS 9.3 और इससे कम)

5. आपको कुंजी को "यूडिड" या "मोबाइल कैपेबिलिटी टाइप" के रूप में पास करना होगा।तुमने किया"और मान"3C4B567E-C4E4-445D-A613-F4867DD2FF67"आपकी डिवाइस आईडी के साथ एक अद्यतन]

6. कृपया विवरण के लिए नीचे दी गई छवि देखें:

IOS के लिए वांछित क्षमताओं को जोड़ना
IOS के लिए वांछित क्षमताओं को जोड़ना

कैसे एक Appium परीक्षण स्क्रिप्ट लिखने के लिए (Android)

  1. अपनी पहली Appium परीक्षण स्क्रिप्ट लिखने के लिए, सबसे पहले, हमें संलग्न Android उपकरणों या एमुलेटर की डिवाइस आईडी प्राप्त करने की आवश्यकता है। डिवाइस आईडी प्राप्त करने के लिए, अपना टर्मिनल या कमांड प्रॉम्प्ट खोलें और "एडीबी डिवाइस" टाइप करें। यह उपकरणों की सूची दिखाएगा।
  2. उसके बाद, हमें एक जावा वर्ग बनाने की आवश्यकता है। एक जावा वर्ग बनाने के लिए, कृपया अपने IDE में "/ src / main / java /" फ़ोल्डर में जाएं, उस पर राइट-क्लिक करें और नया -> जावा क्लास चुनें।
  3. अब हम नीचे एक सेटअप विधि जोड़ेंगे सबसे पहले और का एक उदाहरण बनाएँ एंड्रॉइडड्राइवर.
  4. हमें वांछित क्षमताओं को जोड़ना होगा ऊपर दिखाए गए डिवाइस पैरामीटर सेट करने के लिए।
  5. अब हम एक बनाएंगे यूआरएल हब विवरण के साथ जहां Appium दौड रहा है।
  6. अब हम बुलाएंगे AndroidDriver निर्माता को शुरू करने के लिए URL और वांछित क्षमताएं।
  7. टेस्ट पद्धति में, हम क्रिया करेंगे और वांछित परिणाम प्राप्त करेंगे। जानना कैसे iPhone पर तत्व का निरीक्षण करने के लिएकृपया इस लिंक को देखें। के बारे में सीखना Appium विधियाँकृपया यहाँ क्लिक करें.
  8. हमने संदर्भ के लिए नीचे एक नमूना कोड प्रदान किया है। कृपया इसके माध्यम से जाना।
  9. आफ्टरेस्ट विधि में, हम ड्राइवर को चालू सत्र बंद करने के लिए छोड़ देंगे।

Appium परीक्षण के लिए जावा क्लास कैसे बनाएं

एक जावा वर्ग बनाने के लिए, कृपया नीचे दी गई छवि देखें:

जावा क्लास कैसे बनाएं
जावा क्लास कैसे बनाएं

Android में नमूना Appium परीक्षण कोड

import io.appium.java_client.MobileElement;
import io.appium.java_client.android
        .AndroidDriver;
import io.appium.java_client.remote
        .MobileCapabilityType;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote
        .DesiredCapabilities;
import org.openqa.selenium.support
        .ui.ExpectedConditions;
import org.openqa.selenium.support
        .ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class RunFirstTestAndroid {
    private AndroidDriver driver;

    @BeforeTest
    public void setup() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities
                .setCapability
                        ("platformName", "Android");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_NAME, "Android");
        desiredCapabilities
                .setCapability
                        ("platformVersion", "23");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_VERSION, "23");
        desiredCapabilities
                .setCapability
                        ("deviceName", "Nexus 5X");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .DEVICE_NAME, "Nexus 5X");
        desiredCapabilities
                .setCapability
                        ("automationName", "UIAutomator2");
        desiredCapabilities
                .setCapability
                        (MobileCapabilityType.UDID, "emulator-5554");
        desiredCapabilities
                .setCapability
                        ("udid", "emulator-5554");
        desiredCapabilities
                .setCapability(
                        "ensureWebviewsHavePages", true);
        desiredCapabilities
                .setCapability
                        ("appPackage", "com.android.contacts");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .App, "com.android.contacts");
        desiredCapabilities
                .setCapability
                        ("appActivity",
                                "com.android.contacts" +
                                        ".activities.PeopleActivity");

        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts()
                .implicitlyWait(20, TimeUnit.SECONDS);
    }

    @Test
    public void sampleTest() throws InterruptedException {
        //Adding new contact
        driver.findElementByAccessibilityId
                ("add new contact")
                .click();
        //clicking on OK button
        WebElement element=driver
                .findElementById
                        ("com.android.contacts" +
                                ":id/right_button");
        element.click();
        //Updating the firstname
        driver.findElementByXPath(
                "/hierarchy/android.widget." +
                "FrameLayout/android.view" +
                        ".ViewGroup/android.widget" +
                ".FrameLayout[2]/android" +
                        ".widget.FrameLayout/android.widget" +
                ".ScrollView/android.widget" +
                        ".LinearLayout/android.widget" +
                ".LinearLayout[2]/android.widget" +
                        ".LinearLayout/android.widget" +
                ".LinearLayout/android.widget" +
                        ".LinearLayout/" +
                        "android.widget.EditText")
                .sendKeys("Hello");
        //updating phone number
        driver
                .findElementByXPath("//android.widget" +
                        ".EditText[@text='Phone']")
                .sendKeys("1234567890");
        //updating email id
        driver
                .findElementByXPath("//android.widget" +
                        ".EditText[@text='Email']")
                .sendKeys("xyz@gmail.com");
        //save the contact
        driver
                .findElementById("com.android" +
                        ".contacts" +
                        ":id/menu_save")
                .click();
        WebDriverWait wait=new WebDriverWait(driver,30);
        WebElement el=driver
                .findElementByXPath("//android.view" +
                        ".View[@content-desc=\"Hello\"]");

        wait.until(ExpectedConditions
                .visibilityOfAllElements(el));

        Assert.assertEquals(el
                .getAttribute("content-desc"),"Hello");
        Assert.assertEquals(driver
                .findElementByXPath("\t\n" +
                "//android.widget" +
                        ".RelativeLayout[@content-desc=" +
                        "\"Call Mobile 1 234-567-890\"]" +
                "/android.widget.TextView[1]")
                .getText(),"1 234-567-890");
        Assert.assertEquals(driver.
                findElementByXPath("//android.widget" +
                        ".RelativeLayout[@content-desc" +
                        "=\"Email Home xyz@gmail.com\"]" +
                        "/android.widget.TextView[1]\n")
                .getText(),"xyz@gmail.com");

    }



    @AfterTest
    public void tearDown(){
        driver.quit();
    }
}


कैसे iPhone में एक Appium परीक्षण स्क्रिप्ट लिखने के लिए

  1. अपनी पहली Appium परीक्षण स्क्रिप्ट लिखने के लिए, सबसे पहले, हमें संलग्न iPhone उपकरणों या सिम्युलेटर की डिवाइस आईडी प्राप्त करने की आवश्यकता है। डिवाइस आईडी प्राप्त करने के लिए, अपने टर्मिनल प्रकार को खोलें “xcrun simctl सूची | egrep '(बूटेड)।' "यह उपकरणों की सूची दिखाएगा। कृप्या अधिक जानकारी के लिए इस लिंक का संदर्भ लें.
  2. उसके बाद, हमें एक जावा वर्ग बनाने की आवश्यकता है। एक जावा वर्ग बनाने के लिए, कृपया अपने IDE में "/ src / main / java /" फ़ोल्डर में जाएं, उस पर राइट-क्लिक करें और नया -> जावा क्लास चुनें।
  3. अब हम नीचे एक सेटअप विधि जोड़ेंगे सबसे पहले और का एक उदाहरण बनाएँ आईओएस चालक.
  4. हमें वांछित क्षमताओं को जोड़ना होगा ऊपर दिखाए गए डिवाइस पैरामीटर सेट करने के लिए।
  5. अब हम एक बनाएंगे यूआरएल हब विवरण के साथ जहां Appium दौड रहा है।
  6. अब हम बुलाएंगे IOSDriver निर्माता को शुरू करने के लिए URL और वांछित क्षमताएं।
  7. टेस्ट पद्धति में, हम क्रिया करेंगे और वांछित परिणाम प्राप्त करेंगे। जानना कैसे iPhone पर तत्व का निरीक्षण करने के लिएकृपया इस लिंक को देखें। के बारे में सीखना Appium विधियाँकृपया यहाँ क्लिक करें
  8. हमने संदर्भ के लिए नीचे एक नमूना कोड प्रदान किया है। कृपया इसके माध्यम से जाना।
  9. आफ्टरेस्ट विधि में, हम ड्राइवर को चालू सत्र बंद करने के लिए छोड़ देंगे।

IPhone के लिए नमूना Appium परीक्षण कोड

import io.appium.java_client.MobileElement;
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote
.DesiredCapabilities;
import org.openqa.selenium.support
.ui.ExpectedConditions;
import org.openqa.selenium.support
.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class RunFirstiOSTest {
    private IOSDriver driver;

    @BeforeClass
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities
                .setCapability("platformName", "iOS");
        desiredCapabilities
                .setCapability("platformVersion", "13.6");
        desiredCapabilities
                .setCapability("deviceName", "iPhone 11 Pro Max");
        desiredCapabilities
                .setCapability("automationName", "XCUITest");
        desiredCapabilities
                .setCapability("udid", "3C4B567E-C4E4-445D-A613-F4867DD2FF67");
        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");

        driver = new IOSDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts()
                .implicitlyWait(20, TimeUnit.SECONDS);
    }

    @Test
    public void sampleTest() {
        //Clciking on the contact app
        MobileElement el1 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("Contacts");
        el1.click();
        //Clicking on Add contact
        MobileElement el2 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("Add");
        el2.click();
        //Sending value to the First Name
        MobileElement el3 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("First name");
        el3.sendKeys("Name1");
        //Sending value to the Last Name
        driver.findElementByAccessibilityId
                ("Last name")
                .sendKeys("Surname");
        //Sending value to the Company
        driver
                .findElementByAccessibilityId
                        ("Company")
                .sendKeys("xyz");
        //Clicking on home
        driver
                .findElementByXPath
                        ("//XCUIElementTypeCell[@name=\"add phone\"]")
                .click();
        //Exmaple of explicit wait. Waiting for the element to be visible
        WebDriverWait wait=new WebDriverWait(driver,30);

        WebElement el= driver
                .findElementByXPath
                        ("//XCUIElementTypeTextField" +
                                "[@name=\"home\"]");
        wait.until(ExpectedConditions
                .visibilityOfAllElements(el));
        el.sendKeys("1234567890");
        //Clcking on Done
        driver
                .findElementByXPath(
                        "//XCUIElementTypeButton" +
                        "[@name=\"Done\"]")
                .click();
        //Asserting the value to verify
        Assert.assertEquals(driver
                .findElementByXPath(
                        "//XCUIElementTypeStaticText" +
                        "[@name=\"Name1 Surname\"]\n")
                .getText(),"Name1 Surname");
        Assert.assertEquals(driver
                .findElementByXPath(
                        "//XCUIElementTypeStaticText" +
                        "[@name=\"xyz\"]")
                .getText(),"xyz");
       
    }

    @AfterClass
    public void tearDown() {
        //Quiting the driver
       driver.quit();
    }



}

testNG जोर

उपरोक्त कोड में, हमने getText () या getAttributes विधियों का उपयोग करते हुए तत्वों से प्राप्त वास्तविक डेटा के साथ अपेक्षित डेटा को सत्यापित करने के लिए testNG Assert का उपयोग किया है। यदि स्थिति संतुष्ट होती है, तो Assert हमें टेस्ट केस पास बनाने में मदद करता है; अन्यथा, यह परीक्षण मामले में विफल रहता है।

निष्कर्ष

अब तक, हमने कवर किया है Android और iOS में अपनी पहली Appium परीक्षण स्क्रिप्ट कैसे लिखेंवांछित क्षमताओं का उपयोग कैसे करें, मावेन परियोजना कैसे बनाएं। अगले सत्र में, हम चर्चा करेंगे Appium परीक्षण प्रश्न और उत्तर। पर एक पूर्ण ट्यूटोरियल के लिए Appium, आप कर सकते हैं यहां क्लिक करे

संदर्भ

  1. मेवn
  2. टेस्टएनजी

हिमाद्री दास के बारे में

कैसे लिखने के लिए Appium परीक्षण कोड-आपका पूरा गाइड 2020नमस्ते, मैं हिमाद्री दास हूं, मैं एक ब्लॉगर हूं, और एक ओपन सोर्स योगदानकर्ता हूं। मुझे सूचना प्रौद्योगिकी क्षेत्र में लगभग 11 वर्षों का अनुभव है। वर्तमान में मैं एक स्टार्टअप कंपनी में गुणवत्ता आश्वासन प्रबंधक के रूप में कार्यरत हूँ। मुझे एपियम, सेलेनियम, क्यूटीपी, टिड्डी, ऑटोमेशन फ्रेमवर्क, परफॉर्मेंस टेस्टिंग, फंक्शनल टेस्टिंग, जावा, पायथन, शेल स्क्रिप्टिंग, माइस्क्ल, रेडिस, काफ्का आदि पर व्यावहारिक अनुभव है। अपने काम और ब्लॉग लिखने के अलावा, मुझे खेलना पसंद है। गिटार, यात्रा करना पसंद है और क्रिकेट और फुटबॉल देखना पसंद है। यदि आप मेरे बारे में अधिक जानना चाहते हैं, तो कृपया मेरे लिंक्डिन प्रोफाइल - https://www.linkedin.com/in/himadri-das-2b6b7421/ पर जाएं।

en English
X