این آموزش به شما کمک میکند تا ابزار اتوماسیون 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/ |
appActivity | Application Activity که کاربر میخواهد آنرا از Package لانچ کند | Value= MainActivity, .Settings |
appWaitPackage | Packageای که اپلیکیشن باید منتظر آن بماند | Value=com.example.android.myapp |
appWaitActivity | هر Android Activity که کاربر به زمان انتظار نیاز داشته باشد | Value= 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، به صورت دستهبندی شده از اینجا در دسترس است.