إعداد الاختبار التلقائي لتطبيق الهجين

في هذه المقالة ، أود أن أشارك تجربتي في حل مشكلة بدء الاختبار الآلي لتطبيق الهاتف المحمول على نظام Android.

ماذا سأقول عن:


  • كيفية تشغيل بيئة اختبار الآلي باستخدام Appium
    (نظام تشغيل الكمبيوتر الشخصي - ويندوز 10)
  • كيفية تجنب بعض الأخطاء التي تحدث عند محاولة إجراء الاختبارات في تطبيق مختلط
  • بعض الأوامر الأساسية لتشغيل أبسط الاختبارات. سوف نستخدم جافا وجافا سكريبت

مهمة


أتمتة اختبار تطبيقات الجوال المختلطة.

حول التطبيق المراد اختباره:
منصةالروبوت
الإطارالزاوي ، كوردوفا ، أيوني
المتصفحممر

ربما هذه هي النقاط الرئيسية التي أثرت في تكوين جهاز الكمبيوتر لتشغيل الاختبارات.

بيئة الاختبار


سوف نستخدم Appium كأداة اختبار آلية.
باختصار ، هذه أداة تسمح لك باستخدام الخادم لإرسال أوامر إلى العميل ما يجب القيام به ولماذا.

يمكنك الحصول على معلومات كاملة على موقع المطور .

لنبدأ.

في مكان مناسب لك على القرص ، أنشئ مجلد "أتمتة Appium".

على سبيل المثال:

C:\Appium automation 

كذلك في هذا المجلد (أتمتة C: \ Appium) ، يمكنك إنشاء المزيد من المجلدات:
Android SDKC: \ Appium automation \ Android SDK
أندرويد ستوديوC: \ Appium automation / Android Studio
APKC: \ Appium أتمتة \ APK
أبوم ليبC: \ أتمتة Appium \ Appium Lib
السيلينيوم ليبC: \ Appium automation \ Selenium Lib

إذا كان أي من التطبيقات / المكونات التي قمت بتثبيتها ، باتباع الإرشادات التي تفهمها فقط منطق العلاقة ، أي ليس من الضروري إعادة تثبيت كل شيء.

ملء المجلدات التي تم إنشاؤها وتحميل المكونات الأخرى


1. جافا SDK


اتبع الرابط وانقر فوق تنزيل:



بعد ذلك ، نصل إلى صفحة التنزيل لأنظمة التشغيل المختلفة ، مثل لدي Windows 10 إلى x64 ، حدد:



بعد تنزيل الملف ، افتحه وفك .exe-shnik (حدد المسار أثناء التثبيت) إلى المجلد:

 C:\Program Files\Java\jdk-12.0.1 

(قد يختلف رقم الإصدار في وقت التنزيل)

2. Android Studio و Android SDK


للتنزيل ، اتبع الرابط .

تثبيت في المجلد:

 C:\Appium automation\Android Studio 

أثناء الإصدار الأول من Android Studio ، ستحتاج إلى تكوين البرنامج :

  • نوع التثبيت حدد مخصص ، انقر فوق "التالي"
  • اختر سمة تريدها ، انقر فوق "التالي"
  • حدد موقع SDK الخاص بـ Android C: \ Appium automation \ Android SDK ، انقر فوق "التالي"
  • يمكن ترك إعدادات المحاكي في "الموصى بها" ، انقر فوق "التالي"
  • انقر فوق "إنهاء" وانتظر حتى تكتمل عملية التثبيت.

قم بإنشاء مشروع جديد في Android Studio:

  • انقر فوق بدء مشروع Android Studio جديد
  • أشر إلى الاسم ، والمسار إلى مشروعك ، أو لا يمكنك تغيير أي شيء وترك الاسم المقترح ، انقر فوق التالي
  • في القائمة المنسدلة الهاتف والكمبيوتر اللوحي ، حدد "API 23: Android 6.0 (الخطمي) ، انقر فوق التالي
  • اختر نشاط فارغ ، انقر فوق "التالي"
  • انقر فوق التالي
  • انقر فوق "إنهاء"

تثبيت أدوات SDK

في Android Studio ، حدد Tools - SDK Manager.

في النافذة التي تظهر ، سيتم تحديد قسم Android SDK.



في علامة تبويب أنظمة SDK ، حدد إصدار Android الذي ستجري الاختبار عليه.
وعلى أدوات SDK ، حدد العناصر:

  • أدوات بناء SDK Android
  • محاكي الأندرويد
  • أدوات منصة SDK لنظام Android
  • أدوات SDK Android
  • وثائق Android SDK
  • مستودع الدعم

انقر فوق "تطبيق" أو "موافق" وانتظر حتى ينتهي تنزيل المكونات وتثبيتها.



3. إنشاء متغيرات PATH


انقر بزر الماوس الأيمن فوق "جهاز الكمبيوتر" - "خصائص" - "إعدادات النظام المتقدمة".
في النافذة التي تفتح ، ضمن علامة التبويب "خيارات متقدمة" ، حدد "متغيرات البيئة ..."

في كتلة "متغيرات النظام" ، قم بإنشاء متغير جديد.





المتغير الأول

الاسم المتغير - JAVA_HOME

قيمة المتغير

 C:\Program Files\Java\jdk-12.0.1 

(المسار حيث قمت بتثبيت jdk في الخطوة 1 ، في بعض الحالات ، قد يتم تسمية مجلد Program Files (ملفات x86))

المتغير الثاني

الاسم المتغير - ANDROID_HOME

قيمة المتغير

 C:\Appium automation\Android SDK 

إضافة متغير المسار

ابحث عن متغير المسار في قائمة متغيرات النظام وانقر على "تغيير ...".

انقر فوق "إنشاء" في النافذة التي تظهر وإضافة المتغيرات:

  • ٪ ANDROID_HOME٪ \ المحاكي
  • ٪ ANDROID_HOME٪ \ أدوات النظام الأساسي
  • ٪ ANDROID_HOME٪ \ الأدوات
  • ٪ ANDROID_HOME٪ \ tools \ bin

نتيجة لذلك ، يجب أن تحصل على 4 متغيرات جديدة ، وبعد ذلك تحتاج إلى النقر فوق "موافق".



4. Appium


تحميل Appium:

  • نحن نتبع الرابط http://appium.io/
  • انقر فوق تنزيل
  • نختار Appium-windows-1.13.0.exe (قد يختلف رقم الإصدار في وقت التحميل)



قم بتشغيل ملف. exe الذي تم تنزيله وتثبيت Appium على جهاز الكمبيوتر الخاص بك. أثناء عملية التثبيت ، ستحتاج فقط إلى اختيار التثبيت عالميًا أو لمستخدم معين. لقد قمت بتركيب عالمي منذ ذلك الحين لا يهمني

تنزيل مكتبات Appium:




انقل ملف .jar الذي تم تنزيله إلى المجلد

 C:\Appium automation\Appium Lib 




انقل ملف .jar الذي تم تنزيله إلى المجلد:

 C:\Appium automation\Appium Lib 





انقل ملف .jar الذي تم تنزيله إلى المجلد:

 C:\Appium automation\Appium Lib 

قم بتنزيل مكتبات السيلينيوم:




قم بفك ضغط الأرشيف الذي تم تنزيله في المجلد:

 C:\Appium automation\Selenium Lib 

5. IntelliJ IDEA Community Edition


للتنزيل ، انتقل إلى الرابط https://www.jetbrains.com/idea/download
بالقرب من إصدار Community وانقر فوق Download (هذه نسخة مجانية ، لكنها كافية للاختبارات التلقائية).

تحتوي صفحة التنزيل على مقارنة بين إصدارات Community و Ultimate.

إذا كنت ترغب في شراء الإصدار Ultimate ، يمكنك القيام بذلك بأمان! ولكن ، مرة أخرى ، ستكون نسخة المجتمع كافية.

قم بتشغيل ملف. exe الذي تم تنزيله وتثبيته (فقط انقر فوق "التالي" حتى يبدأ البرنامج في التثبيت)

إطلاق IntelliJ IDEA الأول

  • اختر "لا تستورد الإعدادات"
  • نحن نقبل اتفاقية الترخيص
  • اختيار الموضوع
  • انقر فوق التالي
  • انقر فوق ابدأ باستخدام IntelliJ IDEA

إنشاء مشروع في IntelliJ IDEA

  • اختر إنشاء مشروع جديد
  • حدد المسار إلى Java SDK
    • انقر فوق جديد ...
    • حدد المسار إلى Java SDK C: \ Program Files \ Java \ jdk-12.0.1
  • انقر فوق التالي
  • حدد المربع "إنشاء مشروع من القالب"
  • انقر فوق التالي
  • حدد اسم المشروع وموقعه للحفظ
  • انقر فوق "إنهاء"

إعدادات المشروع الذي تم إنشاؤه

اختر ملف - هيكل المشروع ...

في النافذة التي تظهر ، حدد الوحدات النمطية - التبعيات - "+" - عبوات أو أدلة ...



ونضيف إلى المشروع جميع المكتبات المحملة مسبقًا.



انقر فوق موافق.

الآن المشروع جاهز لإجراء الاختبارات.

6. إعداد جهاز Android


جهاز حقيقي
تحتاج إلى كابل USB لتوصيل الجهاز بالكمبيوتر والهاتف الذكي نفسه.

للبدء ، انتقل إلى "الإعدادات" - "حول الهاتف" في الهاتف الذكي.

علاوة على ذلك ، على كل الهواتف الذكية المختلفة ، كل شيء مختلف ، ولكن خلاصة القول هي أنك بحاجة إلى العثور على "الرقم التسلسلي" وانقر فوقه من 5 إلى 7 مرات حتى تظهر محمصة "أنت الآن مطور" (قد يختلف نص الإخطار من نموذج إلى آخر)

بعد هذا التلاعب ، سيظهر قسم "For Developers" في إعدادات هاتفك. يمكن أيضًا أن يخفي من نموذج إلى نموذج في أقسام مختلفة ، على سبيل المثال ، في مكان ما سيكون في "الإعدادات" - "للمطورين" ، وفي مكان ما "الإعدادات" - "الميزات الخاصة" - "للمطورين" ، إلخ. .

تحتاج إلى الانتقال إلى قسم "للمطورين" وتفعيل "تصحيح أخطاء USB".

عند توصيل هاتفك الذكي عبر USB ، سترى رسالة حول إذن تصحيح أخطاء USB ، ويمكنك التحقق من "الوثوق بهذا الجهاز" والنقر فوق "موافق" ، ثم لن تظهر هذه الرسالة مرة أخرى في المرة التالية التي يتم فيها توصيل الهاتف بجهاز الكمبيوتر هذا.
كل هاتفك الذكي جاهز للعمل في اختبارات تلقائية.

الجهاز الظاهري

يمكنك أيضًا إنشاء جهاز افتراضي عبر Android Studio ، ثم لن تحتاج إلى توصيل الجهاز الحقيقي بالكمبيوتر.

ولكن على جهاز افتراضي ، يمكن أن تنجح الاختبارات ببطء أكثر من جهاز حقيقي.

من أجل إنشائه ، افتح Android Studio ، ثم:

  • "أدوات" - "مدير AVD" - "+ إنشاء جهاز افتراضي ..."
  • اختر جهازًا ، انقر فوق "التالي"
  • اختر الإصدار المطلوب من Android ، انقر فوق "التالي"
  • حدد اسم الجهاز ، انقر فوق "إنهاء"

بعد إجراء عمليات المعالجة في قسم "الأدوات" - "مدير AVD" ، سترى الجهاز الذي تم إنشاؤه. باستخدام رمز "التشغيل" الأخضر ، يمكنك تشغيل الجهاز.

كيفية التحقق من أن جهاز الكمبيوتر الخاص بك رأى الجهاز المتصل؟

قم بتشغيل سطر الأوامر ("ابدأ" - "أدوات مساعدة - Windows" - "موجه الأوامر")
وأدخل الأمر أجهزة بنك التنمية الآسيوي.

نتيجة لذلك ، إذا كان الجهاز متصلاً بتمكين وظيفة "تصحيح أخطاء USB" ، فستتلقى الجهاز المتصل ورقم UDID الخاص به (الرقم التسلسلي):

 List of devices attached UDID device 

7. نكتب مشروع


إضافة الاستيراد.

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; 

نقوم بتسجيل الخادم وأين سيكون عليه إرسال الطلبات

تثبيت برنامج تشغيل Android:

 AndroidDriver<AndroidElement> driver = null; 

نضع المعلمات (الخصائص):

 DesiredCapabilities capabilities = new DesiredCapabilities(); 

اسم الجهاز (يمكنك العثور عليه للجهاز الحقيقي في "الإعدادات" - "حول الهاتف" ، و "الأدوات" الافتراضية - "مدير AVD" - حقل "الاسم"):

 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); 

يمكنك الارتباط بـ APK الذي يجب تشغيله (يجب أن يكون .apk عبارة عن بنية تصحيح أخطاء حتى تتمكن أنت و appium من فحص التطبيقات):

 capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk"); 

إطلاق برنامج تشغيل Appium:

 try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } 

سيكون هذا الرمز كافياً لبدء تشغيل التطبيق الخاص بك على الجهاز المتصل.

فرق إضافية

من أجل تعليق المشروع لفترة معينة من الوقت ، على سبيل المثال 8 ثوانٍ. (يشار القيمة بالمللي ثانية). قد يكون ضروريًا إذا كنت بحاجة إلى انتظار تحميل الصفحة أو التطبيق:

 Thread.sleep(8000); 

نحصل على ContextHandles ، حيث نفهم ما نعمل معه الآن (NATIVE_APP أو WEBVIEW):

 Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } 

عيّن السياق إلى آخر قيمة تم استلامها في الصفيف. سيتيح لك ذلك التبديل بشكل صحيح إلى WEBVIEW ، tk. السياق الافتراضي = NATIVE_APP:

 driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); 

نحن نتحكم في واجهة التطبيق

لأن نحن نعمل مع تطبيق هجين ، على سبيل المثال يتم تقديم عناصر التطبيق في WEBVIEW ، وليس في NATIVE_APP ، ثم غالبًا ما يتعين علينا استخدام نوع واحد من البحث لعنصر findElementByCssSelector.

انقر على زر موافق:

 driver.findElementByCssSelector(".button-ok").click(); 

- حيث .but-ok هي فئة العنصر. يمكنك أيضًا استخدام معرف العنصر تمامًا.

نرسل القيمة في الحقل ، على سبيل المثال ، لديك بحث وتريد إرسال القيمة "Cinema" هناك.

 driver.findElementByCssSelector(".search-input").sendKeys(""); 


انقر لتجد:

 driver.findElementByCssSelector(".search-button").click(); 

بهذه الطريقة ، يمكنك بالفعل التحكم في التطبيق الخاص بك.

عاجلاً أم آجلاً ، سوف تصادف ذلك ، وليس كل المحتوى موجود على شاشة الهاتف الذكي ، أي تحتاج إلى التمرير. إذا لم يكن العنصر مرئيًا على الشاشة أثناء عملية الاختبار ، فسيقوم Appium بإلقاء خطأ أنه لا يرى العنصر ، وعلى الأرجح ستتم تغطية جميع الاختبارات الأخرى بأخطاء.

للتمرير على الشاشة ، يمكنك تنفيذ وظيفة JS scrollIntoView في Java.

 ((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});"); 

في حالتي ، سيتيح لك ذلك الانتقال إلى زر "موافق".

قد يكون من قبيل الصدفة أنك كتبت كل شيء بشكل صحيح ، لكن التمرير لم يتم تنفيذه.

حاول الربط بالعناصر الأخرى التي تظهر على الشاشة ، ومن الأفضل أولاً القيام بذلك من خلال وحدة التحكم في Chrome - Inspect ، لذلك نضمن أن تفهم أنه عند الربط بهذا العنصر ، ستنجح عملية التمرير.

يمكنك الانتقال إلى الخطوة 8 ، وإذا كان كل شيء يناسبك ، فهذا أمر رائع!
ولكن كان لي مصيدة أخرى.
اسمه متصفح كروس ووك.

عندما بدأت المشروع ، كنت أخطأ باستمرار:

 “Make sure the app has its webview configured for debugging” 

هذا يعني أنه لم يتم إجراء اختبار واحد.

ما تحتاج إلى التحقق في هذه الحالة:


بعد هذه التلاعبات ، أضف إمكانيات أخرى إلى مشروعك.

 capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); 

- حيث C: \\ node_modules \\ appium-with-crosswalk-fix \\ chromedriver \\ 2.28 \\ chromedriver.exe
هذه هي الطريقة لإصلاح chromedriver

لذلك سيبدو مشروعك هكذا:

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); } 

مثل هذا المشروع:

  • تثبيت التطبيق الخاص بك على الجهاز.
  • ابحث عن حقل البحث في صفحة التطبيق
  • سوف تجلب هناك معنى "السينما"
  • انقر فوق الزر "بحث"

8. نبدأ المشروع


هناك عدة نقاط رئيسية لبدء المشروع:

  • تشغيل خادم Appium (البند 4)
    • استخدم الاختصار لإطلاق Appium
    • انقر فوق "ابدأ الخادم"
  • قم بتوصيل الجهاز بكمبيوتر شخصي أو قم بتشغيل جهاز افتراضي (البند 6)
  • قم بإعداد مشروع (ص 5 و ص 7)
  • انقر فوق تشغيل (أو على شريط أدوات IntelliJ IDEA ، أو تشغيل - تشغيل "رئيسي")
  • استمتع بالنتيجة

حسنًا ، فأنت حر في اختبار الإعدادات ، المعلومات الضرورية موجودة على الموقع الرسمي للمطور .
يمكن استخدام Appium أيضًا لاختبار تطبيقات iOS.

أردت أن أكتب لفترة وجيزة ، ولكن اتضح كما هو الحال دائما.

شكرا لكل من قرأ حتى النهاية ، وآمل أن يكون مفيدا لك!

Source: https://habr.com/ru/post/ar452742/


All Articles