اختبار Uiautomator

  
إطار عمل لاختبار واجهة المستخدم على مستوى التطبيقات المختلفة
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
21 شباط (فبراير) 2024 2.3.0 - - -

إعلان التبعيات

لإضافة تبعية على الاختبار، يجب إضافة مستودع Google Maven إلى مشروعك. لمزيد من المعلومات، يمكنك الاطّلاع على مستودع Maven من Google.

أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle لتطبيقك أو الوحدة الخاصة بك:

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.3.0"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0")
}

لمزيد من المعلومات حول التبعيات، انظر إضافة تبعيات الإصدار.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء عدد جديد

راجِع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.

الإصدار 2.3.0

الإصدار 2.3.0

21 شباط (فبراير) 2024

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0". يتضمّن الإصدار 2.3.0 هذه الالتزامات.

التغييرات المهمة منذ الإصدار 2.2.0

  • إتاحة الشاشات المتعددة: تمت إضافة إمكانية البحث عن العناصر وتشغيلها على شاشات متعددة، فضلاً عن توفّر UiDevice طرق لإدارة الشاشات الثانوية (Ie6544 وI912cd).
  • أدوات اختيار جديدة:
    • تمت إضافة By.displayId لاختيار العناصر حسب معرّف العرض (I1825b).
    • تمت إضافة "By.hasParent" و"By.hasAncestor" لاختيار العناصر وفقًا للوالدَين (I93c36).
    • تمت إضافة طُرق By.hint لاختيار العناصر حسب نص التلميح (Idd345).
  • شروط مخصّصة: تم عرض واجهة Condition لإتاحة شروط الانتظار المخصّصة وإضافة طرق UiDevice#wait وUiObject2#wait وUiObject2#scrollUntil مقابلة (27c0ea و099d6e).
  • إصلاح الأخطاء والموثوقية
    • تم إصلاح مشكلة كانت تتسبب في أن تكون العمليات الحسابية لحجم العرض غير صحيحة في بعض الأحيان والتي قد تتجاهل أجزاء من الشاشة (Ifc016). قد تحتاج إلى تعديل الإحداثيات والإزاحة المستخدمة في الاختبارات.
    • تم تعديل حقن MotionEvent لتحسين الدقة (678ca3) ومحاكاة إيماءات المستخدم بشكل أفضل (454450).
    • تم تحسين موثوقية عمليات التنقّل (I7b059) وعمليات التدوير (c6cea0) والنقرات الطويلة (49572b) وعمليات التدوير (3c619a) وغيرها.

الإصدار 2.3.0-rc01

7 شباط (فبراير) 2024

تم إصدار "androidx.test.uiautomator:uiautomator:2.3.0-rc01" بدون أي تغييرات. يتضمّن الإصدار 2.3.0-rc01 هذه الالتزامات.

الإصدار 2.3.0-beta01

13 كانون الأول (ديسمبر) 2023

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-beta01". يتضمّن الإصدار 2.3.0-beta01 هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية طريقتي الهوامش المستندة إلى النسبة المئوية UiObject2 إلى setGestureMarginPercentage وsetGestureMarginsPercentage لتحقيق الاتساق (I24435).

إصلاح الأخطاء

  • تم تحسين الخطأ الذي يظهر عند عدم العثور على شاشة عرض ثانوية أو عدم إمكانية الوصول إليها (116b23)

الإصدار 2.3.0-alpha05

1 تشرين الثاني (نوفمبر) 2023

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-alpha05". يحتوي الإصدار 2.3.0-alpha05 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة UiObject2#getDrawingOrder لعرض معلومات ترتيب الرسم (مؤشر z). (I5dfa4).
  • تمت إضافة طرق UiDevice للحصول على دوران الشاشات الثانوية وضبطه وتجميده وإلغاء تجميده. (I912cd).

إصلاح الأخطاء

  • تمت إضافة إعادة المحاولة إلى UiObject2#scrollUntil عند تعذّر رصد نهاية التمرير (Ibac6f).
  • تم إصلاح المشكلة المتعلّقة باستخدام UiDevice لمثيل Instrumentation قديم في حال إعادة إنشائه (I18cae).
  • تم إصلاح NPE المحتمل في حال تعذّر تحديد رقم التعريف المعروض عند تفريغ العُقد (Icafcb).
  • تمت إضافة تحذير عند تنفيذ النقرات/عمليات الانتقال على عناصر غير قابلة للنقر/الانتقال (I4a5d9).
  • تم خفض سرعة التمرير التلقائية بنسبة UiObject2 لتحسين الموثوقية (I5e071).

الإصدار 2.3.0-alpha04

26 تموز (يوليو) 2023

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-alpha04". يحتوي الإصدار 2.3.0-alpha04 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة By.hasParent وBy.hasAncestor لإتاحة إمكانية العثور على العناصر وفقًا للوالدَين (I93c36).
  • تمت إضافة UiObject2#getHint لاسترداد نص تلميح العنصر، وطرق By.hint لاختيار العناصر وفقًا لنص التلميح (Idd345).
  • تمت إضافة By.displayId لإتاحة إمكانية اختيار العناصر وفقًا للشاشة التي تظهر عليها (I1825b).
  • تمت إضافة طريقتي UiDevice#getDisplayHeight(int) وUiDevice#getDisplayWidth(int) للعثور على أبعاد شاشة ما حسب رقم تعريفها (Ie6544).
  • تمت إضافة طريقتين wait(SearchCondition, long) وwait(UiObject2Condition, long) للتوافق مع الأنظمة القديمة (Iebfda).
  • تم تغيير UiDevice#executeShellCommand إلى "علني"، ولكن لا يُنصح باستخدامه بدلاً من الإخفاء (Ic48a1).

إصلاح الأخطاء

  • تم تعديل حقن MotionEvent لتقليل اهتزاز الجهاز من خلال إعطاء الأولوية لدقة الإيماءات على السرعة (678ca3).
  • تمت إضافة تتبُّع الطرق الثقيلة للموارد لتحديد المؤثِّرات السلبية في الأداء (d17de3).
  • تمت إضافة آلية لإعادة المحاولة عند بدء اتصال UiAutomation (048caf).
  • تم إصلاح NPE محتمل من عُقد فارغة في UiDevice#dumpWindowHierarchy (b725eb).
  • تم إصلاح الأخطاء غير المتوقعة المتعلقة بطلبات البحث أو التشغيل على الشاشات الخاصة (985db6، 7053d4).

الإصدار 2.3.0-alpha03

19 نيسان (أبريل) 2023

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-alpha03". يحتوي الإصدار 2.3.0-alpha03 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تم عرض واجهة Condition للسماح بشروط الانتظار المخصّصة بدلاً من الاعتماد فقط على الوظائف المضمّنة في Until، وتعديل طرق UiDevice#wait وUiObject2#wait لقبول هذه الواجهة (27c0ea).
  • تمت إضافة UiObject2#scrollUntil لإتاحة التنقّل إلى أن يتم استيفاء الشرط وتحقيق التكافؤ مع UiScrollable (099d6e).
  • تمت إضافة UiDevice#setOrientationPortrait وsetOrientationLandscape لتسهيل عمليات التدوير على جميع أنواع الأجهزة (e13cb7).
  • تمت إضافة UiObject2#setGestureMarginPercent لإتاحة ضبط الهوامش بالنسبة إلى حجم العنصر. (Ib8c77)

إصلاح الأخطاء

  • تم إصلاح طرق UiScrollable التي تستخدم أحيانًا إحداثيات غير صالحة على حِزم تطوير البرامج (SDK) من 18 إلى 22 (b53ece).
  • تم إصلاح إخفاق UiObject2#setText وclearText في تعديل النص على حزمتي تطوير البرامج (SDK) 18 و19 (77e41d).
  • تم إصلاح أخطاء UiWatcher التي لا يتم تنفيذها بالترتيب الصحيح (c85f92).
  • تم إصلاح المشكلة التي قد تكون غير مكتملة بعد في تدوير الجهاز بعد تغيير الاتجاه بنسبة UiDevice (c6cea0).
  • تحسين موثوقية النقرات الطويلة والسحب والتصغير أو التكبير بإصبعين (49572b و3c619a)

الإصدار 2.3.0-alpha02

11 كانون الثاني (يناير) 2023

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-alpha02". يحتوي الإصدار 2.3.0-alpha02 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • إعادة صياغة تسجيل الدخول في جميع أنحاء المكتبة لتوفير مزيد من المعلومات والتحذير من المشاكل المحتملة وتحسين الاتّساق
  • تمت إضافة UiDevice#pressKeyCodes لإتاحة الضغط على مفاتيح متعددة في آنٍ واحد، مثلاً الضغط على POWER وVOLUME_DOWN لأخذ لقطة شاشة (22e525).
  • تمت إضافة UiDevice#setCompressedLayoutHierarchy وإيقاف UiDevice#setCompressedLayoutHeirarchy نهائيًا لإصلاح خطأ إملائي في اسم الطريقة (4e2f65).
  • تم وضع علامة على UiAutomatorInstrumentationTestRunner تفيد بأنّه متوقّف نهائيًا لأنّه يتعامل مع UiAutomatorTestCase المتوقّفة نهائيًا ولم تعُد ضرورية (be6c85).
  • تم تعديل قيمة التأخير بين UiObject2 MotionEvent ثانية إلى ضعف معدّل إعادة تحميل الشاشة لمحاكاة إيماءات المستخدم بشكل أفضل (454450).
  • تم توفير إمكانية مطابقة النص المتعدد الأسطر ومطابقة الوصف (1625e6، b/255787130).

إصلاح الأخطاء

  • إصلاح أخطاء StaleObjectException التي يتم طرحها أحيانًا أثناء تنفيذ طلبات بحث أو انتظار عناصر (4cbcc0)
  • تم إصلاح القيم المعروضة لـ UiScrollable#scrollToBeginning وscrollToEnd وflingToBeginning وflingToEnd ولا تشير إلى ما إذا تم الوصول إلى البداية/النهاية (d33e06).
  • تم إصلاح طريقة UiScrollable#scrollForward وscrollBackward مع تجاهل المهلة التي تم ضبطها (29e4f3).
  • تم إصلاح الدالة الإنشائية للنسخة BySelector التي لا تتعامل مع أدوات اختيار العمق (6c7b91).
  • تم إصلاح معالجة قيم النسب المئوية غير الصالحة في UiObject#pinchIn وpinchOut (01b973).
  • تم إصلاح مشكلة نادرة، وهي فقدان دعم النوافذ المتعددة في حال إعادة ضبط اتصال UiAutomation الأساسي (1bb956).

الإصدار 2.3.0-alpha01

7 أيلول (سبتمبر) 2022

تم طرح "androidx.test.uiautomator:uiautomator:2.3.0-alpha01". يحتوي الإصدار 2.3.0-alpha01 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • علّقت على بطلان جميع الأساليب العامة.
  • تم تبديل حقن MotionEvent إلى غير متزامن مع مهلة قصيرة للحصول على إيماءات UiObject2 أكثر سلاسة.
  • تم تقليل الفاصل الزمني للاستطلاع أثناء الانتظار من 1000 ملي ثانية إلى 100 ملي ثانية.
  • تم تحديث UiDevice#wakeUp وUiDevice#sleep لاستخدام KEYCODE_WAKEUP وKEYCODE_SLEEP للتوافق مع الأجهزة التي تتجاوز زر التشغيل.
  • تمت إضافة UiObject2#getDisplayId وإمكانية العثور على العناصر وإدارتها في شاشات متعددة.
  • تمت إضافة طريقتين UiObject#click وUiObject2#clickAndWait للنقر على نقطة باستخدام إحداثياتها.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت فيها العمليات الحسابية لحجم العرض غير صحيحة في بعض الأحيان والتي قد تتجاهل أجزاءً من الشاشة، خاصةً في وضع النوافذ المتعددة (Ifc016c).
  • تم إصلاح تحجيم لقطات الشاشة في UiDevice#takeScreenshot (Id80ad6).
  • تم تحسين موثوقية Until.scrollFinished وUiObject2#scroll (I7b0595).
  • تم إصلاح تحذيرات الوضع المتشدد IncorrectContextUseViolation (Iffa6a0).