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
- نصب آندروید SDK (استودیو) [لینک]
- نصب JDK (یا Java Development Kit) [لینک]
- نصب Eclipse [لینک]
- TestNg را برای Eclipse نصب کنید [لینک]
- نصب Selenium Server JAR [لینک]
- Appium Client Library [لینک]
- APK App Info در Google Play [لینک]
- js (الزامی نیست – هر زمانیکه Appium Server نصب شد، به طور پیشفرض با “Node.exe” و NPM همراه است. چنین چیزی در نسخه فعلی Appium نیز موجود است.)
- برنامه دسکتاپ Appium را نصب کنید
Appium Desktop را نصب کنید
Appium Studio یک Open source GUI application به منظور نصب Appium Server است. این مجموعه شامل تمام موارد لازم برای نصب و استفاده از Appium Server میباشد. همچنین دارای یک بازرس(Inspector) برای دریافت اطلاعات اساسی در مورد اپلیکیشنهای شماست. این ابزار با یک Recorder همراه است تا یک Boilerplate Code برای اتومات کردن برنامههای تلفن همراه شما ایجاد کند.
مرحله ۱- برو به اینجا و روی Download Appium کلیک کن.
مرحله ۲- برای ویندوز، فایل exe را انتخاب کرده و دانلود کنید. حجم تقریبی فایل ۱۶۲ مگابایت است و زمان دانلود آن بر اساس سرعت اینترنت شما خواهد بود.
مرحله ۳- روی exe دانلود شده کلیک نمایید.
مرحله ۴- در یک ماشین ویندوزی، نیازی به نصب Appium وجود ندارد. Appium مستقیما از exe اجرا میشود. پس از کلیک بر روی exe، تصویر زیر را برای چند دقیقه مشاهده خواهید کرد.
برای Mac، شما باید DMG را نصب کنید.
مرحله ۵- سپس شما پنجره Server Start را مشاهده خواهید کرد. این قسمت گزینه پورت و هاست پیشفرض را که شما قادر به تغییر آن هستید ارائه میدهد. در این قسمت نسخه Appiumای که آنرا استفاده میکنید نشان داده شده است.
مرحله ۶- با کلیک روی دکمه Start Server، یک سرور جدید روی پورت و هاست مشخص شده راهاندازی میشود. خروجی Server Log نیز نمایش داده میشود.
مرحله ۷- New Session Window را از مسیر زیر کلیک کنید.
مرحله ۸- میتوانید Desired Capabilities(قابلیتهای مورد نظر) را وارد کنید و یک Session را شروع کنید.
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 و پورت ۴۷۲۵ بارگیری کنید.
- فایل منبع(Source File) یا app. را از Local برای تست انتخاب نمایید.
- چک باکس “App Path” را برای فعالسازی دکمه “Choose” انتخاب کنید.
مرحله ۲- حالا روی دکمه “Choose” کلیک کنید تا به شما گزینهای برای Browse و انتخاب Test File از Local Drive ارائه دهد.
مرحله ۳- Simulator را روی ماشین Mac آغاز کنید.
مرحله ۴- دکمه “Launch” را از گوشه سمت راست بالا بزنید، که منجر به فعال شدن آیکون آبی رنگ میشود. با کلیک دوباره بر روی آیکون رنگ آبی، Appium Inspector و Simulator با یک برنامه از پیش انتخاب شده باز میشوند.
مرحله ۵- راهاندازی Appium Inspector، سلسله مراتب عنصر(Element Hierarchy) را به ساختار ستونی نشان خواهد داد. همچنین، کاربر میتواند Actionها را با استفاده از دکمههایی مانند Tap، Swipe و غیره اِعمال کند.
مرحله ۶- به منظور توقف Recording روی دکمه “Stop” کلیک کنید.
متصل کردن Android Emulator به Appium
مرحله ۱- Android SDK را روی سیستم خود نصب کنید. این مسیر را دنبال کنید: Control panel >> System and Security >> System . سپس از پانل سمت چپ بر روی “Advanced System Settings” کلیک نمایید. از پاپ آپ “System Properties” روی تب یا برگه “Advanced” کلیک نموده و سپس روی دکمه “Environment Variables” کلیک نمایید.
مرحله ۲- حالا از پاپ آپ “Environment variables”، روی “Path” دابل کلیک کرده و مقدار ANDROID_HOME را که به SDK Directory شما اشاره میکند، را سِت نمایید. در مسیر، کل مسیر SDK Folder را اضافه کنید. مانند: C:\User\ABC\Desktop\adt-bundled-windows-x86_64-20140321\sdk
مرحله ۳- 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>
مرحله ۶- دستور ‘adb start-server’ را اجرا کنید. این دستور ADB server را که توسط Appium برای ارسال دستورات به دستگاه Android شما استفاده میشود را آغاز خواهد کرد.
مرحله ۷- حالا، به پوشه Appium در سیستم خود بروید و Appium را با کلیک بر روی یک فایل Appium.exe شروع کنید.
مرحله ۸- آدرس IP یا شماره پورت را تغییر ندهید و روی دکمه “Launch” کلیک کنید. همانطور که در زیر نشان داده شده است، کنسول Appium شما از ۱۲۷٫۰٫۰٫۱:۴۷۲۳ شروع میشود.
مرحله ۸- روی دکمه “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
- Appium تستِ Android با نسخه پایینتر از ۴٫۲ را پشتیبانی نمیکند.
- پشتیبانی محدود برای تست Hybrid App. به عنوان مثال: امکان سوییچ کردن Action برنامه از برنامه وب به بومی و برعکس وجود ندارد.
- اجرای Appium Inspector در مایکروسافت ویندوز پشتیبانی نمیشود.
خطاهای متداول و عیب یابی در Appium
خطا | مراحل عیبیابی |
---|---|
1. error:- The following desired capabilities are required, but were not provided: device Name, platformName(خطا: - قابلیتهای مورد نظر زیر لازم است، اما ارائه نشده است: نام دستگاه، نام پلتفرم) | 1. اضافه کردن قابلیتهای مورد نظر: نام دستگاه، نام پلتفرم در اسکریپت Appium |
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، به صورت دستهبندی شده از اینجا در دسترس است.
کدام نوع از eclips باید نصب شه ؟ کاش این مورد رو توضیح میدادین.
سلام
به لینک دانلود موجود در محتوای ارائه شده در ابتدای پست مراجعه بفرمایید