سه شنبه , ۱۱ اردیبهشت ۱۴۰۳

آموزش Appium برای تست اپلیکیشن‌های موبایل Android و iOS-قسمت اول: آشنایی، نصب و راه‌اندازی و کارکرد اولیه

Appium
Appium

Appium چیست؟

Appium یک چارچوب(Framework) تست UI در Mobile Applicationها به صورت منبع بازِ توزیع شده(Distributed Open Source) و رایگان است. Appium امکان تست بومی(Native)، ترکیبی(Hybrid) و وب اپلیکیشن را ارائه داده و از تست خودکار در Deviceهای فیزیکی و نیز مقلد(Emulator) یا شبیه‌ساز(Simulator) نیز پشتیبانی می‌کند. این ابزار Cross-Platform Application Testing را ارائه می‌دهد، یعنی هر API برای هر دو Test Script اندروید و iOS استفاده می‌شود.

این ابزار هیچ وابستگی به سیستم دستگاه موبایلی ندارد.  از آنجایی که Appium دارای یک چارچوب یا Wrapper می‌باشد که کامندها یا دستورات Selenium Webdriver را به دستورات UIAutomation-iOS و یا UIAutomator-Android ترجمه می‌کند، به نوع دستگاه وابستگی ندارد و نه سیستم عامل.

Appium از تمام زبان‌هایی که دارای Selenium Client Library هستند، مانند Java، Objective-C، جاوااسکریپت با node.js، زبان PHP، Ruby، Python، C-sharp و غیره پشتیبانی می‌کند.

Appium چگونه کار می‌کند؟

  • Appium یک “HTTP Server” است که با استفاده از یک پلتفرم Node.js نوشته شده و با استفاده از Webdriver JSON Wire Protocol یک iOS Session و Android Session را Drive می‌کند. از این رو، قبل از راه اندازی سرورِ Appium، Node.js باید از قبل بر روی سیستم نصب شده باشد.
  • هنگامی که Appium دانلود و نصب می‌شود، یک سرور روی ماشین ما ستاپ می‌شود، که یک REST API را نشان می‌دهد.
  • سپس یک درخواست Command و Connection را از Client دریافت کرده و این دستور را بر روی دستگاه‌های موبایلی(Android/OS) اجرا می‌کند.
  • پس از آن پاسخ را با HTTP Responseها بازگشت می‌دهد. دوباره، برای اجرای این درخواست، به منظور Drive کردن واسط کاربریِ(UI) اپلیکیشن‌ها از Frameworkهای Mobile Test Automation استفاده می‌کند. Frameworkای مانند:
    • Apple Instruments برای iOS (باید گفت Instruments فقط در Xcode 3.0 یا بالاتر با OS X v10.5 و بعد از آن در دسترس است)
    • Google UIAutomator برای Android API سطح ۱۶ یا بالاتر
    • Selendroid برای Android API سطح ۱۵ یا کمتر

پیشنیاز برای استفاده از Appium

  1. نصب آندروید SDK (استودیو) [لینک]
  2. نصب JDK (یا Java Development Kit) [لینک]
  3. نصب Eclipse [لینک]
  4. TestNg را برای Eclipse نصب کنید [لینک]
  5. نصب Selenium Server JAR [لینک]
  6. Appium Client Library [لینک]
  7. APK App Info در Google Play [لینک]
  8. js (الزامی نیست – هر زمانیکه Appium Server نصب شد، به طور پیشفرض با “Node.exe” و NPM همراه است. چنین چیزی در نسخه فعلی Appium نیز موجود است.)
  9. برنامه دسکتاپ Appium را نصب کنید

Appium Desktop را نصب کنید

Appium Studio یک Open source GUI application به منظور نصب Appium Server است. این مجموعه شامل تمام موارد لازم برای نصب و استفاده از Appium Server می‌باشد. همچنین دارای یک بازرس(Inspector) برای دریافت اطلاعات اساسی در مورد اپلیکیشن‌های شماست. این ابزار با یک Recorder همراه است تا یک Boilerplate Code برای اتومات کردن برنامه‌های تلفن همراه شما ایجاد کند.

مرحله ۱- برو به اینجا و روی Download Appium کلیک کن.

Appium 1-1
Appium 1-1

مرحله ۲- برای ویندوز، فایل exe را انتخاب کرده و دانلود کنید. حجم تقریبی فایل ۱۶۲ مگابایت است و زمان دانلود آن بر اساس سرعت اینترنت شما خواهد بود.

Appium 1-2
Appium 1-2

مرحله ۳- روی exe دانلود شده کلیک نمایید.

Appium 1-3
Appium 1-3

مرحله ۴- در یک ماشین ویندوزی، نیازی به نصب Appium وجود ندارد. Appium مستقیما از exe اجرا می‌شود. پس از کلیک بر روی exe، تصویر زیر را برای چند دقیقه مشاهده خواهید کرد.

برای Mac، شما باید DMG را نصب کنید.

Appium 1-4
Appium 1-4

مرحله ۵- سپس شما پنجره Server Start را مشاهده خواهید کرد. این قسمت گزینه پورت و هاست پیشفرض را که شما قادر به تغییر آن هستید ارائه می‌دهد. در این قسمت نسخه Appiumای که آنرا استفاده می‌کنید نشان داده شده است.

Appium 1-5
Appium 1-5

مرحله ۶- با کلیک روی دکمه Start Server، یک سرور جدید روی پورت و هاست مشخص شده راه‌اندازی می‌شود. خروجی Server Log نیز نمایش داده می‌شود.

Appium 1-6
Appium 1-6

مرحله ۷- New Session Window را از مسیر زیر کلیک کنید.

Appium 1-7
Appium 1-7

مرحله ۸- می‌توانید Desired Capabilities(قابلیت‌های مورد نظر) را وارد کنید و یک Session را شروع کنید.

Appium 1-8
Appium 1-8

Appium Inspector

مشابه با ابزار رکورد و ابزار پخش Selenium IDE، ابزار Appium دارای یک Inspector برای ضبط و بازپخش(Record And Playback) است. این ابزار با استفاده از بازرسی DOM و تولید Test Scriptها در هر زبان مورد نظر، رفتارهای بومی برنامه را ضبط کرده و پخش می‌نماید. با این حال، در حال حاضر، هیچ پشتیبانی روی Appium Inspector برای Microsoft Windows وجود ندارد. در ویندوز، این ابزار، Appium Server را راه اندازی کرده اما قادر به بازرسی عناصر نیست. با این حال، بیننده UIAutomator Viewer را می‌توان به عنوان یک گزینه برای بازرسی عناصر استفاده نمود.

مراحل شروع با Appium Inspector در دستگاه Mac:

مرحله ۱- Appium Server خود را با IP Address: 0.0.0.0 و پورت ۴۷۲۵ بارگیری کنید.

  1. فایل منبع(Source File) یا app. را از Local برای تست انتخاب نمایید.
  2. چک باکس “App Path” را برای فعالسازی دکمه “Choose” انتخاب کنید.

مرحله ۲- حالا روی دکمه “Choose” کلیک کنید تا به شما گزینه‌ای برای Browse و انتخاب Test File از Local Drive ارائه دهد.

Appium 1-9
Appium 1-9

مرحله ۳- Simulator را روی ماشین Mac آغاز کنید.

مرحله ۴- دکمه “Launch” را از گوشه سمت راست بالا بزنید، که منجر به فعال شدن آیکون آبی رنگ می‌شود. با کلیک دوباره بر روی آیکون رنگ آبی، Appium Inspector و Simulator با یک برنامه از پیش انتخاب شده باز می‌شوند.

Appium 1-10
Appium 1-10

مرحله ۵- راه‌اندازی Appium Inspector، سلسله مراتب عنصر(Element Hierarchy) را به ساختار ستونی نشان خواهد داد. همچنین، کاربر می‌تواند Actionها را با استفاده از دکمه‌هایی مانند Tap، Swipe و غیره اِعمال کند.

Appium 1-11
Appium 1-11

مرحله ۶- به منظور توقف Recording روی دکمه “Stop” کلیک کنید.

متصل کردن Android Emulator به Appium

مرحله ۱- Android SDK را روی سیستم خود نصب کنید. این مسیر را دنبال کنید: Control panel >> System and Security >> System . سپس از پانل سمت چپ بر روی “Advanced System Settings” کلیک نمایید. از پاپ آپ “System Properties” روی تب یا برگه “Advanced” کلیک نموده و سپس روی دکمه “Environment Variables” کلیک نمایید.

Appium 1-12
Appium 1-12

مرحله ۲- حالا از پاپ آپ “Environment variables”، روی “Path” دابل کلیک کرده و مقدار ANDROID_HOME را که به SDK Directory شما اشاره می‌کند، را سِت نمایید. در مسیر، کل مسیر SDK Folder را اضافه کنید. مانند: C:\User\ABC\Desktop\adt-bundled-windows-x86_64-20140321\sdk

Appium 1-13
Appium 1-13

مرحله ۳- Android Emulator یا هر Device متصل شده دیگر به سیستم خود را آغاز نمایید(مطمئن شوید گزینه Android Debugging را در دستگاه Android خود فعال کرده‌اید. برای بررسی این موضوع به این مسیر مراجعه نمایید Device Settings >> Developer Options و سپس گزینه Debugging را فعال نمایید).

مرحله ۴- Command Prompt را باز کرده و به دایرکتوریِ \platform-tools\ در Android SDK خود بروید.(مثلا: D:\adt-bundle-windows-x86_64-20130514\sdk\platform-tools)

مرحله ۵- دستور ‘adb devices’ را اجرا کنید. شما می‌توانید دستگاه متصل شده خود را که در پنجره Command Prompt لیست شده است را مشاهده کنید. در CMD بنویسید “adb devices<“. این دستور Emulator Instanceهای متصل را لیست می‌کند. مانند دستور زیر:

adb –s emulator-5554 install <Location of .apk file>

 

Appium 1-14
Appium 1-14

مرحله ۶- دستور ‘adb start-server’ را اجرا کنید. این دستور ADB server را که توسط Appium برای ارسال دستورات به دستگاه Android شما استفاده می‌شود را آغاز خواهد کرد.

مرحله ۷- حالا، به پوشه Appium در سیستم خود بروید و Appium را با کلیک بر روی یک فایل Appium.exe شروع کنید.

مرحله ۸- آدرس IP یا شماره پورت را تغییر ندهید و روی دکمه “Launch” کلیک کنید. همانطور که در زیر نشان داده شده است، کنسول Appium شما از ۱۲۷٫۰٫۰٫۱:۴۷۲۳ شروع می‌شود.

Appium 1-15
Appium 1-15

مرحله ۸- روی دکمه “Start” کلیک کنید، Appium Server در سیستم شما اجرا می‌شود.

Appium Test Case برای Native Android App(مثلا Calculator)

مرحله ۱- ADT eclipse plugin یا ADT bundled را به صورت جداگانه از اینجا دانلود کنید.

مرحله ۲- Eclipse را باز کرده و یک کلاس جدید از مسیر Project >> Package >> Class ایجاد نمایید.

مرحله ۳- Selenium library و Testng را در آن پروژه جدید Import کنید.

مرحله ۴- حالا یک برنامه تست کوچک برای Calculator.app ایجاد کنید تا دو رقم را جمع نماید.


package src_Appium;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
//import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.*;

public class Calculator {
WebDriver driver;

@BeforeClass
public void setUp() throws MalformedURLException{
        //Set up desired capabilities and pass the Android app-activity and app-package to Appium
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("BROWSER_NAME", "Android");
        capabilities.setCapability("VERSION", "4.4.2");
        capabilities.setCapability("deviceName","Emulator");
        capabilities.setCapability("platformName","Android");

   capabilities.setCapability("appPackage", "com.android.calculator2");
// This package name of your app (you can get it from apk info app)
        capabilities.setCapability("appActivity","com.android.calculator2.Calculator"); // This is Launcher activity of your app (you can get it from apk info app)
//Create RemoteWebDriver instance and connect to the Appium server
 //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities
   driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void testCal() throws Exception {
   //locate the Text on the calculator by using By.name()
   WebElement two=driver.findElement(By.name("2"));
   two.click();
   WebElement plus=driver.findElement(By.name("+"));
   plus.click();
   WebElement four=driver.findElement(By.name("4"));
   four.click();
   WebElement equalTo=driver.findElement(By.name("="));
   equalTo.click();
   //locate the edit box of the calculator by using By.tagName()
   WebElement results=driver.findElement(By.tagName("EditText"));
        //Check the calculated value on the edit box
assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6";

}

@AfterClass
public void teardown(){
        //close the app
        driver.quit();
}
}

Appium Server و Android Emulator از “AVD Manager” را در نظر گرفته و Run >> TestNG را کلیک کنید. برنامه فوق، Calculator.app را در Emulator انتخابی اجرا کرده و نتایج را با استفاده از یک TestNG Framework زیر کنسول Eclipse نمایش می‌دهد.

محدودیت‌های استفاده از Appium

  1. Appium  تستِ Android با نسخه پایینتر از ۴٫۲ را پشتیبانی نمی‌کند.
  2. پشتیبانی محدود برای تست Hybrid App. به عنوان مثال: امکان سوییچ کردن Action برنامه از برنامه وب به بومی و برعکس وجود ندارد.
  3. اجرای Appium Inspector در مایکروسافت ویندوز پشتیبانی نمی‌شود.

خطاهای متداول و عیب یابی در Appium

خطامراحل عیب‌یابی

1. error:- The following desired capabilities are required, but were not provided: device Name, platformName(خطا: - قابلیت‌های مورد نظر زیر لازم است، اما ارائه نشده است: نام دستگاه، نام پلتفرم)

1. اضافه کردن قابلیت‌های مورد نظر: نام دستگاه، نام پلتفرم در اسکریپت Appium
به عنوان مثال:
capabilities.setCapability ("deviceName","Emulator"); capabilities.setCapability ("platformName","Android");

2. error: Could not find adb. Please set the ANDROID_HOME environment variable with the Android SDK root directory path(خطا: adb یافت نشد لطفا متغیر محیط ANDROID_HOME را با مسیر دایرکتوری SDK root تنظیم کنید)

2. شما احتمالا باید مسیر دارکتوری SDK root در "Environment Variables" را با عنوان System و ستون "Path" تنظیم کنید

3. error:org.openqa.selenium.SessionNotCreatedException: A new session could not be created(خطا: error:org.openqa.selenium.SessionNotCreatedException: یک Session جدید ایجاد نشد)

3. شما باید مسیر برنامه درست را تنظیم کرده و سرور Appium را ری‌استارت کنید

4. چگونه یک عنصر DOM یا XPath را در یک برنامه تلفن همراه پیدا کنید؟

4. از UIAutomatorviewer برای پیدا کردن عنصر DOM برای برنامه Android استفاده کنید

تمام قسمت‌های آموزش Appium، به صورت دسته‌بندی شده از اینجا در دسترس است.

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

۲ دیدگاه

  1. کدام نوع از eclips باید نصب شه ؟ کاش این مورد رو توضیح میدادین.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *