בדיקת Uiautomator

  
מסגרת לבדיקת ממשק משתמש פונקציונלי באפליקציות שונות
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
7 במאי 2025 2.3.0 - - 2.4.0-alpha02

הצהרת יחסי תלות

כדי להוסיף יחסי תלות לבדיקה, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.

מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle של האפליקציה או המודול:

מגניב

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

Kotlin

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

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 2.4

גרסה 2.4.0-alpha02

7 במאי 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 משוחרר. גרסה 2.4.0-alpha02 מכילה את ההוספות האלה.

תכונות חדשות

  • הצורה הראשונית של ה-API החדש של Uiautomator. אפשר ליצור את UiAutomatorTestScope דרך המפעל uiAutomator שמעניק גישה לממשקי ה-API החדשים של onView.
  • כללי Lint ראשוניים לאזהרה על שימוש ב-AccessibilityNodeInfo#getText ולהצעת שימוש ב-textAsString.

שינויים ב-API

  • נוספה Configurator#setDefaultDisplayId כדי להגדיר מזהה תצוגה שיגביל את כל החיפושים ל-(Icdf17).
  • שיניתי את Searchable (ממשק ששותף על ידי UiDevice ו-UiObject2) ל'גלוי לכולם' למען הנוחות (I67f18).

תיקוני באגים

  • תוקנה הטיפול במפתחות מטא ב-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 מכילה את ההוספות האלה.

שינויים ב-API

  • הפרמטרים Configurator#getKeyInjectionDelay ו-setKeyInjectionDelay הוצאו משימוש כי הם לא בשימוש עכשיו, מאחר שהטקסט תמיד מוחדר ישירות ולא באמצעות הקשות על מקשים. (I3bcc5).

תיקוני באגים

  • עדכנו את העיכוב בין אירועי תנועה מסוג UiObject2 כדי להביא בחשבון קצב רענון דינמי (למשל, תצוגה חלקה) (I43f12).
  • הפחתת הבעיות הזמניות שנובעות מסטטוס לא עדכני של צמתים של נגישות בממשקי משתמש מסוימים, על ידי ביטול התוקף של המטמון של הנגישות מדי פעם (I3be25).
  • StaleObjectExceptions קבועים שמתרחשים כשקוראים ל-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).
  • סלקטורים חדשים:
    • נוספה האפשרות 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 מכילה את ההתחייבויות האלה.

שינויים ב-API

  • השמות של שיטות השוליים המבוססות על אחוזים UiObject2 שונו ל-setGestureMarginPercentage ול-setGestureMarginsPercentage כדי לשמור על עקביות (I24435)

תיקוני באגים

  • שיפור השגיאה שמופיעה כשמסך משני לא נמצא או שאין גישה אליו (116b23)

גרסה 2.3.0-alpha05

1 בנובמבר 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 משוחרר. גרסה 2.3.0-alpha05 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספנו את UiObject2#getDrawingOrder כדי לחשוף מידע על סדר הציור (z-index). (I5dfa4).
  • נוספו שיטות UiDevice לקבלה, להגדרה, להקפאה ולביטול ההקפאה של סיבוב המסכים המשניים. (I912cd).

תיקוני באגים

  • הוספנו ניסיון חוזר ל-UiObject2#scrollUntil כשלא ניתן היה לזהות את סיום הגלילה (Ibac6f).
  • תוקנה בעיה שבה UiDevice משתמש במכונה Instrumentation לא עדכנית אם היא נוצרה מחדש (I18cae).
  • תוקנה שגיאת NPE אפשרית אם לא ניתן לקבוע את מזהה התצוגה בזמן יצירת גרסת dump של צמתים (Icafcb).
  • נוספה אזהרה כשמבצעים קליקים/גלילות על אובייקטים שלא ניתן ללחוץ עליהם או לגלול בהם (I4a5d9).
  • הפחתנו את מהירות הגלילה UiObject2 שמוגדרת כברירת מחדל כדי לשפר את האמינות (I5e071).

גרסה 2.3.0-alpha04

26 ביולי 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 משוחרר. גרסה 2.3.0-alpha04 מכילה את ההצהרות האלה.

שינויים ב-API

  • נוספו 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 אפשרית מצמתים null ב-UiDevice#dumpWindowHierarchy (b725eb).
  • תוקנו שגיאות בלתי צפויות שנגרמו משאילתות או מפעולות במסכים פרטיים (985db6,‏7053d4).

גרסה 2.3.0-alpha03

19 באפריל 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 משוחרר. גרסה 2.3.0-alpha03 מכילה את ההוספות האלה.

שינויים ב-API

  • חשפנו ממשק Condition כדי לאפשר תנאי המתנה מותאמים אישית במקום להסתמך רק על האפשרויות המובנות ב-Until, ועדכנו את השיטות UiDevice#wait ו-UiObject2#wait כדי לקבל את הממשק הזה (27c0ea).
  • הוספנו את UiObject2#scrollUntil כדי לתמוך בגלילה עד לעמידה בתנאי, וכדי להגיע לשוויון עם UiScrollable (099d6e).
  • הוספנו את UiDevice#setOrientationPortrait ו-setOrientationLandscape כדי להקל על רוטציות בין סוגי מכשירים (e13cb7).
  • נוספה התמיכה ב-UiObject2#setGestureMarginPercent להגדרת שוליים ביחס לגודל האובייקט. (Ib8c77)

תיקוני באגים

  • תוקנו שיטות UiScrollable שבהן נעשה שימוש מדי פעם בקואורדינטות לא חוקיות ב-SDKs 18 עד 22 (b53ece).
  • תוקנה בעיה שבה UiObject2#setText ו-clearText לא הצליחו לשנות טקסט ב-SDKs 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 מכילה את ההוספות האלה.

שינויים ב-API

  • שיפרנו את הרישום ביומן בספרייה כדי לספק מידע נוסף, להזהיר מפני בעיות אפשריות ולשפר את העקביות.
  • הוספנו את UiDevice#pressKeyCodes כדי לתמוך בלחיצה על כמה מקשים בו-זמנית, למשל לחיצה על POWER ו-VOLUME_DOWN כדי לצלם מסך (22e525).
  • הוספנו את UiDevice#setCompressedLayoutHierarchy והוצאנו משימוש את UiDevice#setCompressedLayoutHeirarchy כדי לתקן שגיאת הקלדה בשם השיטה (4e2f65).
  • הסימון UiAutomatorInstrumentationTestRunner הוצא משימוש כי הוא מטפל ב-UiAutomatorTestCase שהוצא משימוש ולא נחוץ יותר (be6c85).
  • עדכנו את העיכוב בין UiObject2 MotionEvent ל-2x‏ ‎refresh rate של המסך, כדי לדמות טוב יותר את תנועות המשתמש (454450).
  • הוספנו תמיכה בהתאמה של טקסט ותיאור בכמה שורות (1625e6, ‏ b/255787130).

תיקוני באגים

  • תוקנה בעיה שבה לפעמים הושלחו StaleObjectExceptions במהלך שליחת שאילתה או במהלך ההמתנה לאובייקטים (4cbcc0).
  • תוקנו הערכים המוחזרים של UiScrollable#scrollToBeginning,‏ scrollToEnd,‏ flingToBeginning ו-flingToEnd שלא ציינו אם הגעתם להתחלה או לסוף (d33e06).
  • תוקנו השיטות UiScrollable#scrollForward ו-scrollBackward שהתעלמו מזמן הקצוב לתפוגה שהוגדר (29e4f3).
  • תוקן הבעיה שבה מאסטר ה-copy של 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 מכילה את ההוספות האלה.

שינויים ב-API

  • הוספת הערות לגבי הערך null של כל השיטות הציבוריות.
  • החדרת MotionEvent הועברה ללא קשר לזמן (asynchronous) עם עיכוב קצר כדי לאפשר תנועות UiObject2 חלקות יותר.
  • הקטינו את מרווח הזמן של הסקרים בזמן ההמתנה מ-1,000 אלפיות השנייה ל-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).