تست خودکار رابط کاربری

چارچوبی برای تست رابط کاربری چند برنامه‌ای
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۳ دسامبر ۲۰۲۵ ۲.۳.۰ - - ۲.۴.۰-آلفا۰۷

اعلام وابستگی‌ها

برای افزودن یک وابستگی به test، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven گوگل را مطالعه کنید.

وابستگی‌های مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

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

کاتلین

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

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

تست پوسته UIAutomator نسخه ۱.۰

نسخه ۱.۰.۰-آلفا۰۳

۳ دسامبر ۲۰۲۵

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha03 منتشر شد. نسخه 1.0.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • تغییر در startActivity wait برای انتظار برای پنجره جدید ( I35da6 ، b/440021797 )
  • screenSizePixel در RecorderCommands به‌روزرسانی شد ( If558c ، b/429173157 )

نسخه ۱.۰.۰-آلفا۰۲

۱۳ آگوست ۲۰۲۵

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 شامل این کامیت‌ها است.

نسخه ۱.۰.۰-آلفا۰۱

۱۸ ژوئن ۲۰۲۵

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اولین نسخه آلفا از کتابخانه پوسته ui-automator برای اجرای دستورات پوسته به عنوان کاربر پوسته. این کتابخانه امکان خواندن stdout، stderr و نوشتن در stdin یک فرآیند sh که توسط پوسته راه‌اندازی شده است را فراهم می‌کند. در واقع، این UiAutomation#executeShellCommandRwe را که در api 34 معرفی شده است، پشتیبانی می‌کند.

نسخه ۲.۴

نسخه ۲.۴.۰-آلفا۰۷

۳ دسامبر ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha07 منتشر شد. نسخه 2.4.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • تغییر startActivity wait برای انتظار برای پنجره جدید. این باعث می‌شود که راه‌اندازی به‌طورکلی همزمان باشد و به نسخه‌های آینده Macrobenchmark اجازه می‌دهد تا تشخیص تکمیل راه‌اندازی را پیکربندی کنند. ( I35da6 ، Id6e6f ، b/440021797 )
  • API بدون نام بسته‌ی صریح در UiAutomatorTestScope حذف شد. ( I8c285 ، b/413417205 )

نسخه ۲.۴.۰-alpha06

۱۳ آگوست ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha06 منتشر شد. نسخه 2.4.0-alpha06 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • APIهای مبتنی بر پنجره برای بهبود تست چند پنجره‌ای اضافه شده‌اند، یعنی اکنون می‌توان از UiDevice#findWindow برای یافتن یک UiWindow خاص طبق ByWindowSelector ساخته شده با متدهای کارخانه‌ای By.Window استفاده کرد. ( I359c4 ، I40528 ، I8c963 )

نسخه ۲.۴.۰-آلفا۰۵

۱۸ ژوئن ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha05 منتشر شد. نسخه 2.4.0-alpha05 شامل این کامیت‌ها است.

تغییرات API

  • UiObject2#waitForStable به عنوان میانبر برای UiObject2#accessibilityNodeInfo#waitForStable() اضافه شد.

نسخه ۲.۴.۰-آلفا۰۴

۴ ژوئن ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha04 منتشر شد. نسخه 2.4.0-alpha04 شامل این کامیت‌ها است.

تغییرات API

  • برای روشن شدن نحوه‌ی کار با compose ( I53a3b , b/419006806 ) نام onView به onElement تغییر داده شد.

رفع اشکالات

نسخه ۲.۴.۰-آلفا۰۳

۲۰ مه ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha03 منتشر شد. نسخه 2.4.0-alpha03 شامل این کامیت‌ها است.

رفع اشکالات

  • رفع مشکل ارسال NPE در برخی موارد از طریق waitForStableInActiveWindow ( Ibf50f ، b/417046391 )

نسخه ۲.۴.۰-آلفا۰۲

۷ مه ۲۰۲۵

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 منتشر شد. نسخه 2.4.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • شکل اولیه‌ی رابط برنامه‌نویسی کاربردی جدید Uiautomator . UiAutomatorTestScope می‌توان از طریق factory uiAutomator ایجاد کرد که به رابط‌های onView جدید onView دسترسی می‌دهد.
  • قوانین اولیه Lint برای هشدار در مورد استفاده از AccessibilityNodeInfo#getText و پیشنهاد استفاده از textAsString .

تغییرات API

  • برای تنظیم شناسه نمایش جهت محدود کردن همه جستجوها به ( Icdf17Configurator#setDefaultDisplayId اضافه شد.
  • برای راحتی، Searchable (رابط کاربری مشترک UiDevice و UiObject2 ) به public ( I67f18 ) تغییر یافت.

رفع اشکالات

  • مدیریت کلیدهای متا در UiDevice#pressKeyCodes ( I73f80 ) اصلاح شد.
  • UiDevice#getWindowRoots به‌روزرسانی شد تا همیشه ریشه‌ها را به ترتیب Z ( I87426 ) برگرداند.
  • مشکلی که باعث می‌شد برخی از حرکات ( I60dd3 ، If4edd ) ناقص اجرا شوند، برطرف شد.
  • رفع مشکل حلقه بی‌نهایت نادر هنگام فراخوانی UiDevice#scrollUntil ( I39989 ).

نسخه ۲.۴.۰-آلفا۰۱

۲۶ ژوئن ۲۰۲۴

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 منتشر شد. نسخه 2.4.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • پارامتر‌های Configurator#getKeyInjectionDelay و setKeyInjectionDelay که منسوخ شده‌اند، اکنون بدون استفاده هستند و متن همیشه مستقیماً و نه با فشردن کلید تزریق می‌شود ( I3bcc5 ).

رفع اشکالات

  • تأخیر بین رویدادهای حرکتی UiObject2 به‌روزرسانی شد تا نرخ‌های به‌روزرسانی پویا (یعنی نمایش روان) در نظر گرفته شوند ( I43f12 ).
  • با نامعتبر کردن دوره‌ای حافظه پنهان دسترسی ( I3be25 )، پوسته‌پوسته شدن ناشی از کهنه شدن گره دسترسی در رابط‌های کاربری خاص کاهش یافت.
  • خطای StaleObjectException که هنگام فراخوانی toString یا hashCode روی یک UiObject2 قدیمی ( I38ea1 ) رخ می‌داد، برطرف شد.
  • بهبود عملکرد UiWatcher با حذف فراخوانی‌های غیرضروری waitForIdle ( I8c65e ).
  • خطاهای javadoc برطرف شد، به خصوص برای روشن شدن زمان استفاده از هر پارامتر Configurator ( Ie10b1 ، I71631 ).

نسخه ۲.۳.۰

نسخه ۲.۳.۰

۲۱ فوریه ۲۰۲۴

androidx.test.uiautomator:uiautomator:2.3.0 منتشر شد. نسخه 2.3.0 شامل این کامیت‌ها است.

تغییرات مهم از زمان ۲.۲.۰

  • پشتیبانی از چند نمایشگر : پشتیبانی از یافتن و کار با اشیاء در چندین نمایشگر و متدهای UiDevice برای مدیریت نمایشگرهای ثانویه ( Ie6544 ، I912cd ) اضافه شده است.
  • انتخابگرهای جدید :
    • برای انتخاب اشیاء بر اساس شناسه نمایش آنها ( I1825bBy.displayId اضافه شد.
    • اضافه شدن 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 ) و موارد دیگر بهبود یافته است.

نسخه ۲.۳.۰-rc01

۷ فوریه ۲۰۲۴

androidx.test.uiautomator:uiautomator:2.3.0-rc01 بدون هیچ تغییری منتشر شده است. نسخه 2.3.0-rc01 شامل این کامیت‌ها است.

نسخه ۲.۳.۰-بتا۰۱

۱۳ دسامبر ۲۰۲۳

androidx.test.uiautomator:uiautomator:2.3.0-beta01 منتشر شد. نسخه 2.3.0-beta01 شامل این کامیت‌ها است.

تغییرات API

  • برای سازگاری، نام متدهای حاشیه مبتنی بر درصد UiObject2 را به setGestureMarginPercentage و setGestureMarginsPercentage تغییر داد ( I24435 )

رفع اشکالات

  • خطایی که هنگام عدم یافتن یا عدم دسترسی به نمایشگر ثانویه رخ می‌داد، بهبود یافت ( 116b23 )

نسخه ۲.۳.۰-آلفا۰۵

۱ نوامبر ۲۰۲۳

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 منتشر شد. نسخه 2.3.0-alpha05 شامل این کامیت‌ها است.

تغییرات API

  • برای نمایش اطلاعات ترتیب ترسیم (z-index)، UiObject2#getDrawingOrder اضافه شد ( I5dfa4 ).
  • متدهای UiDevice برای دریافت، تنظیم، فریز کردن و رفع فریز چرخش نمایشگرهای ثانویه اضافه شد. ( I912cd ).

رفع اشکالات

  • تلاش مجدد به UiObject2#scrollUntil اضافه شد، زمانی که پایان پیمایش قابل تشخیص نبود ( Ibac6f ).
  • مشکلی که باعث می‌شد UiDevice در صورت بازسازی یک نمونه Instrumentation قدیمی ( I18cae ) از آن استفاده کند، برطرف شد.
  • مشکل NPE احتمالی در صورتی که شناسه نمایش هنگام آزادسازی گره‌ها قابل تعیین نبود ( Icafcb ) برطرف شد.
  • هشدار هنگام کلیک/اسکرول روی اشیاء غیرقابل کلیک/اسکرول ( I4a5d9 ) اضافه شد.
  • سرعت اسکرول پیش‌فرض UiObject2 برای بهبود قابلیت اطمینان کاهش یافت ( I5e071 ).

نسخه ۲.۳.۰-آلفا۰۴

۲۶ ژوئیه ۲۰۲۳

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 منتشر شد. نسخه 2.3.0-alpha04 شامل این کامیت‌ها است.

تغییرات API

  • اضافه شدن By.hasParent و By.hasAncestor برای پشتیبانی از یافتن اشیاء بر اساس والدینشان ( I93c36 ).
  • UiObject2#getHint برای بازیابی متن راهنمای یک شیء و متدهای By.hint برای انتخاب اشیاء بر اساس متن راهنمای آنها ( Idd345 ) اضافه شد.
  • برای پشتیبانی از انتخاب اشیاء بر اساس نمایشگری که روی آن هستند ( I1825bBy.displayId اضافه شد.
  • متدهای 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 ) برطرف شد.

نسخه ۲.۳.۰-آلفا۰۳

۱۹ آوریل ۲۰۲۳

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 منتشر شد. نسخه 2.3.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • یک رابط Condition ارائه شده است تا به جای تکیه صرف بر شرایط داخلی Until ، امکان ایجاد شرایط انتظار سفارشی را فراهم کند و متدهای UiDevice#wait و UiObject2#wait را برای پذیرش این رابط به‌روزرسانی کرده است ( 27c0ea ).
  • UiObject2#scrollUntil برای پشتیبانی از پیمایش تا زمان برآورده شدن یک شرط و رسیدن به برابری با UiScrollable ( 099d6e ) اضافه شد.
  • برای تسهیل چرخش‌ها در انواع دستگاه‌ها ( e13cb7 ) UiDevice#setOrientationPortrait و setOrientationLandscape اضافه شد.
  • برای پشتیبانی از تنظیم حاشیه‌ها نسبت به اندازه شیء UiObject2#setGestureMarginPercent اضافه شد. ( Ib8c77 )

رفع اشکالات

  • رفع مشکل استفاده گاه به گاه متدهای UiScrollable از مختصات نامعتبر در SDK های 18 تا 22 ( b53ece ).
  • رفع مشکل عدم تغییر متن UiObject2#setText و clearText در SDK های نسخه ۱۸ و ۱۹ ( 77e41d ).
  • رفع مشکل عدم اجرای UiWatcher ها به ترتیب صحیح ( c85f92 ).
  • مشکلی که باعث می‌شد چرخش دستگاه پس از تغییر جهت UiDevice ( c6cea0 ) هنوز کامل نشده باشد، برطرف شد.
  • بهبود قابلیت اطمینان کلیک‌های طولانی، کشیدن و رها کردن ( 49572b ، 3c619a ).

نسخه ۲.۳.۰-آلفا۰۲

۱۱ ژانویه ۲۰۲۳

androidx.test.uiautomator:uiautomator:2.3.0-alpha02 منتشر شد. نسخه 2.3.0-alpha02 شامل این کامیت‌ها است.

تغییرات API

  • برای ارائه اطلاعات بیشتر، هشدار در مورد مشکلات احتمالی و بهبود ثبات، ثبت وقایع در سراسر کتابخانه مجدداً اصلاح شد.
  • UiDevice#pressKeyCodes برای پشتیبانی از فشار دادن همزمان چندین کلید، مثلاً فشار دادن POWER و VOLUME_DOWN برای گرفتن اسکرین شات ( 22e525 ) اضافه شد.
  • برای رفع اشتباه تایپی در نام متد ( 4e2f65UiDevice#setCompressedLayoutHierarchy اضافه و UiDevice#setCompressedLayoutHeirarchy منسوخ شد.
  • UiAutomatorInstrumentationTestRunner به عنوان منسوخ علامت‌گذاری شده است زیرا UiAutomatorTestCase های منسوخ شده را مدیریت می‌کند و دیگر لازم نیست ( be6c85 ).
  • تأخیر بین UiObject2 MotionEvent به دو برابر نرخ تازه‌سازی صفحه نمایش به‌روزرسانی شد تا حرکات کاربر بهتر شبیه‌سازی شوند ( ۴۵۴۴۵۰ ).
  • پشتیبانی از تطبیق متن و توضیحات چندخطی اضافه شد ( 1625e6 ، b/255787130 ).

رفع اشکالات

  • رفع خطای StaleObjectException که گاهی اوقات هنگام پرس و جو یا انتظار برای اشیاء ( 4cbcc0 ) رخ می‌داد.
  • اشکالی که باعث می‌شد مقادیر برگشتی UiScrollable#scrollToBeginning ، scrollToEnd ، flingToBeginning و flingToEnd نشان دهنده‌ی رسیدن به ابتدا/انتها نباشند، برطرف شد ( d33e06 ).
  • رفع مشکل نادیده گرفتن زمان‌بندی پیکربندی‌شده برای متدهای UiScrollable#scrollForward و scrollBackward ( 29e4f3 ).
  • مشکل عدم مدیریت انتخابگرهای عمق توسط سازنده کپی BySelector برطرف شد ( 6c7b91 ).
  • رفع مشکل مدیریت مقادیر درصد نامعتبر در UiObject#pinchIn و pinchOut ( 01b973 ).
  • مشکل نادری که در آن پشتیبانی از چند پنجره در صورت ریست شدن اتصال UiAutomation اصلی از بین می‌رفت ( 1bb956 ) برطرف شد.

نسخه ۲.۳.۰-آلفا۰۱

۷ سپتامبر ۲۰۲۲

androidx.test.uiautomator:uiautomator:2.3.0-alpha01 منتشر شد. نسخه 2.3.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • تهی بودن همه متدهای عمومی را حاشیه‌نویسی کرد.
  • تزریق MotionEvent با کمی تأخیر به حالت ناهمزمان تغییر داده شد تا حرکات UiObject2 روان‌تر شوند.
  • فاصله زمانی رای‌گیری در حین انتظار از ۱۰۰۰ میلی‌ثانیه به ۱۰۰ میلی‌ثانیه کاهش یافت.
  • 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 ).