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

آموزش Appium برای تست اپلیکیشن‌های موبایل Android و iOS-قسمت سوم: Appium Desired Capabilityها برای Android Emulator

Appium
Appium

این آموزش به شما کمک می‌کند تا ابزار اتوماسیون Appium را درک کنید. علاوه بر این Desired Capabilityih و Appium را با استفاده از Maven پوشش می‌دهد.

قابلیت های مورد نظر چیست؟
Desired Capability، به ما کمک می‌کند تا رفتار سرور را در زمان اتوماسیون اصلاح کنیم. در Appium، این یک نوع Hashmap یا زوج Key-Value که برای ارسال یک Command به Appium Server استفاده می‌شود. در Appium، تمام Client Commandها در متن یک Session اجرا می‌شوند.

به عنوان مثال، یک مشتری POST/Session Request را شامل JSON Object را به Appium Server ارسال می‌کند.

از این رو، برای ارسال هر گونه Request دلخواه یا برای حفظ هر Session دلخواه با سرور، مجموعه‌ای از زوج Key-Value استفاده می‌شود. این موضوع به عنوان “Desired Capability” شناخته می‌شود.

import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
{
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName","Android Emulator");
        capabilities.setCapability("platformVersion", "4.4");
}

نقش مهم Desired Capability

  • “DesiredCapabilities” به کاربر کمک می‌کند تا Session Request را با سرور کنترل کند. به عنوان مثال – اگر ما iOS Session بخواهیم، ممکن است Capability را به صورت PlatformName = iOS سِت کنیم. یا اگر Android Session بخواهیم ممکن است Capability را به صورت PlatformName = Android سِت کنیم.
  • “DesiredCapabilities” برای سِتاپ کردن Webdriver Instance استفاده می‌شود مانند: FirefoxDriver، ChromeDriver، InternetExplorerDriver.
  • “DesiredCapabilities” برای Selenium Grid بسیار مفید است. به عنوان مثال: این مورد برای دسترسی به Test Caseهای مختلف در یک مرورگر متفاوت و سیستم عامل متفاوت استفاده می‌شود. با توجه به DesiredCapability Grid مذبور، Hub به Node مورد نظر اشاره می‌کند. در اینجا، این گره‌ها با استفاده از set property method به صورت زیر تعریف می‌شوند:
DesiredCapabilities obj = new DesiredCapabilities(); 
obj.setBrowserName("firefox"); 
obj.setVersion("18.0.1"); 
obj.setPlatform(org.openqa.selenium.Platform.WINDOWS);	
  • DesiredCapabilities یک Package تعریف شده Library می‌باشد. پیش از استفاده از DesiredCapabilities، باید از Library مذکور در پایین Import شود.
Org.openqa.selenium.remote.DesiredCapabilities

Appium از Android و iOS پشتیبانی می‌کند. بنابراین در اینجا مجموعه‌ مجزایی از Appium Server Capabilityها وجود دارد.

در جدول زیر برخی از Android Capabilityها که معمولا مورد استفاده هستند و نیز Value آنها برای استفاده ارائه شده است.

CapabilityشرحValue/Use

appPackage

فراخوانی Desired Java Package در اندروید که کاربر قصد اجرای آنرا دارد

Value= com.example.myapp/

Obj.setCapability("appPackage", "com.whatsapp");

appActivity

Application Activity که کاربر می‌خواهد آنرا از Package لانچ کند

Value= MainActivity, .Settings

Obj.setCapability("appActivity", "com.whatsapp.Main");

appWaitPackage

Packageای که اپلیکیشن باید منتظر آن بماند

Value=com.example.android.myapp

appWaitActivity

هر Android Activity که کاربر به زمان انتظار نیاز داشته باشد

Value= SplashActivity

capabilities.setCapability("appWaitActivity", "com.example.game.SplashActivity")

نکته: برای مشاهده Android Capabilityهای بیشتر به اینجا مراجعه نمایید.

در زیر جدول برخی از iOS Capabilityها که معمولا مورد استفاده قرار می‌گیرند و Value آن برای استفاده ارائه شده است.

CapabilityشرحValue

LaunchTimeout

مجموع زمان (به دقیقه) جهت انتظار برای instrumentation.

2000

UDID

جهت شناسایی شماره یکتای دستگاه(Device) برای دستگاه فیزیکی متصل شده

166aestu4

نکته: برای مشاهده iOS Capabilityهای بیشتر به اینجا مراجعه نمایید.

Extract کردن اطلاعات Activityها و Packageها
Packageها به bundled Fileها یا Classها مرتبط هستند. این یک ساختار سازمان یافته برای برنامه‌نویسی ماژولار می دهد. در جاوا، Packageهای مختلف در یک Jar File ذخیره می‌شوند. کاربر به راحتی می‌تواند Jar File را برای اجرای کامل فراخوانی نماید. مفاهیم مشابه در دنیای توسعه اپلیکیشن موبایل پیروی می‌شود.

در سیستم عامل Android، تمام برنامه‌ها به صورت بسته های‌جاوا نصب می‌شوند. از این رو، برای Extract کردن اطلاعات مسیر Packageها، کلاس Android PackageManager مورد استفاده قرار می گیرد.

این کار اطلاعات Activity و Package را قبل و پس از نصب اپلیکیشن بازیابی می‌کند. چنین چیزی در دستگاه‌های آندرویدی نصب شده است.

شما می‌توانید Instanceای از کلاس PackageManager را با فراخوانی ()getPackageManager دریافت نمایید.

این متد قادر به دسترسی به Packageها و Permission مربوط به برنامه‌های نصب شده و دستکاری آنها می‌باشد.

برای مثال:

PackageManager pManager = getPackageManager();
List<ApplicationInfo> list = pManager.getInstalledApplications(PackageManager.GET_META_DATA)

خلاصه:

  • Desired Capability همیشه برای ارسال Command به Appium Server روی یک زوج Key-Value اجرا می‌شود.
  • از PackageManager Class برای Extract کردن اطلاعات Application در Android استفاده نمایید.

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

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

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

Selenium

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

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

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

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