Test Uiautomator
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
13 أغسطس 2025 | 2.3.0 | - | - | 2.4.0-alpha06 |
تعريف التبعيات
لإضافة تبعية في الاختبار، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha06" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06") }
لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
Test Uiautomator Shell Version 1.0
الإصدار 1.0.0-alpha02
13 أغسطس 2025
تم طرح androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على عمليات الإيداع هذه.
الإصدار 1.0.0-alpha01
18 يونيو 2025
تم طرح androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على عمليات الدمج هذه.
الميزات الجديدة
- الإصدار الأوّل من مكتبة ui-automator shell لتنفيذ أوامر shell كمستخدم shell تتيح هذه المكتبة قراءة stdout وstderr والكتابة في stdin لعملية sh يتم تشغيلها بواسطة shell. في الواقع، يتم نقل
UiAutomation#executeShellCommandRwe
إلى الإصدارات القديمة من نظام التشغيل التي لا تتضمّنها، وذلك بدءًا من المستوى 34 لواجهة برمجة التطبيقات.
الإصدار 2.4
الإصدار 2.4.0-alpha06
13 أغسطس 2025
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha06
. يحتوي الإصدار 2.4.0-alpha06 على عمليات الدمج هذه.
الميزات الجديدة
- تمت إضافة واجهات برمجة تطبيقات مستندة إلى النوافذ لتحسين اختبار النوافذ المتعددة، أي يمكن الآن استخدام
UiDevice#findWindow
للعثور علىUiWindow
معيّن وفقًا لـByWindowSelector
تم إنشاؤه باستخدام طرق المصنعBy.Window
. (I359c4 وI40528 وI8c963)
الإصدار 2.4.0-alpha05
18 يونيو 2025
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha05
. يحتوي الإصدار 2.4.0-alpha05 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
UiObject2#waitForStable
كاختصار لـUiObject2#accessibilityNodeInfo#waitForStable()
الإصدار 2.4.0-alpha04
4 يونيو 2025
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha04
. يحتوي الإصدار 2.4.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
onView
إلىonElement
لتوضيح أنّه يعمل مع Compose (I53a3b، b/419006806)
إصلاح الأخطاء
- حلّ المشكلة في
waitForStableInActiveWindow
(290457f1، b/420349130)
الإصدار 2.4.0-alpha03
20 مايو 2025
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ
waitForStableInActiveWindow
الذي يؤدي إلى ظهور NPE في بعض الحالات (Ibf50f، b/417046391)
الإصدار 2.4.0-alpha02
7 مايو 2025
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha02
. يحتوي الإصدار 2.4.0-alpha02 على عمليات الدمج هذه.
الميزات الجديدة
- الشكل الأوّلي لواجهة برمجة التطبيقات الجديدة
Uiautomator
يمكن إنشاءUiAutomatorTestScope
من خلال المصنعuiAutomator
الذي يتيح الوصول إلى واجهات برمجة التطبيقات الجديدةonView
. - قواعد Lint الأولية للتحذير من استخدام
AccessibilityNodeInfo#getText
واقتراح استخدامtextAsString
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
Configurator#setDefaultDisplayId
لضبط رقم تعريف العرض من أجل حصر جميع عمليات البحث على (Icdf17). - تم تغيير
Searchable
(الواجهة المشترَكة بينUiDevice
وUiObject2
) إلى "عام" لتسهيل الاستخدام (I67f18).
إصلاح الأخطاء
- تم إصلاح مشكلة التعامل مع مفاتيح Meta في
UiDevice#pressKeyCodes
. (I73f80). - تم تعديل
UiDevice#getWindowRoots
لعرض الجذور دائمًا بترتيب Z (I87426). - تم إصلاح المشكلة المتمثّلة في عدم اكتمال بعض الإيماءات (I60dd3 وIf4edd).
- تم إصلاح مشكلة نادرة في التكرار اللانهائي عند طلب
UiDevice#scrollUntil
(I39989).
الإصدار 2.4.0-alpha01
26 يونيو 2024
تم طرح androidx.test.uiautomator:uiautomator:2.4.0-alpha01
. يحتوي الإصدار 2.4.0-alpha01 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
Configurator#getKeyInjectionDelay
وsetKeyInjectionDelay
نهائيًا لأنّ المَعلمة لم تعُد مستخدَمة بعد أن أصبح يتم إدخال النص مباشرةً بدلاً من الضغط على المفاتيح. (I3bcc5).
إصلاح الأخطاء
- تم تعديل المهلة بين أحداث
UiObject2
الحركة لتتوافق مع معدّلات التحديث الديناميكية (أي ميزة "عرض سلس") (I43f12). - تم تقليل المشاكل الناتجة عن عدم توفّر بيانات حديثة لعُقد تسهيل الاستخدام في بعض واجهات المستخدم من خلال إبطال ذاكرة التخزين المؤقت لتسهيل الاستخدام بشكل دوري (I3be25).
- تم إصلاح الأخطاء
StaleObjectException
التي تحدث عند استدعاءtoString
أوhashCode
علىUiObject2
قديم. (I38ea1) - تحسين أداء
UiWatcher
من خلال تخطّي طلباتwaitForIdle
غير الضرورية (I8c65e). - تم إصلاح عدم الدقة في javadoc، خاصةً لتوضيح وقت استخدام كل مَعلمة
Configurator
. (Ie10b1 وI71631)
الإصدار 2.3.0
الإصدار 2.3.0
21 فبراير 2024
تم طرح androidx.test.uiautomator:uiautomator:2.3.0
. يتضمّن الإصدار 2.3.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.2.0
- دعم الشاشات المتعددة: تمت إضافة إمكانية العثور على العناصر والتعامل معها على شاشات متعددة، بالإضافة إلى طريقتَي
UiDevice
لإدارة الشاشات الثانوية (Ie6544 وI912cd). - أدوات اختيار جديدة:
- الشروط المخصّصة: تم توفير واجهة
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-index). (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).