ทดสอบ Uiautomator

  
เฟรมเวิร์กสําหรับการทดสอบ UI ที่ใช้งานได้จริงแบบข้ามแอป
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
7 พฤษภาคม 2025 2.3.0 - - 2.4.0-alpha02

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มการพึ่งพาใน test คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ 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")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 2.4

เวอร์ชัน 2.4.0-alpha02

7 พฤษภาคม 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 2.4.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • รูปร่างเริ่มต้นของ Uiautomator Api ใหม่ UiAutomatorTestScope สามารถสร้างผ่านโรงงาน uiAutomator ที่ให้สิทธิ์เข้าถึง onView api ใหม่
  • กฎ 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 เพื่อพิจารณาอัตราการรีเฟรชแบบไดนามิก (เช่น Smooth Display) (I43f12)
  • ลดความผิดพลาดที่เกิดจากโหนดการช่วยเหลือพิเศษที่ล้าสมัยใน UI บางรายการโดยการทำให้แคชการช่วยเหลือพิเศษเป็นโมฆะเป็นระยะๆ (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)
  • ตัวเลือกใหม่
    • เพิ่ม 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 ที่อาจเกิดขึ้นหากไม่สามารถระบุรหัสที่แสดงเมื่อถ่ายโอนข้อมูลโหนด (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 ที่ใช้พิกัดที่ไม่ถูกต้องใน 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 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ปรับปรุงการบันทึกทั่วทั้งไลบรารีเพื่อให้ข้อมูลเพิ่มเติม เตือนเกี่ยวกับปัญหาที่อาจเกิดขึ้น และปรับปรุงความสอดคล้อง
  • เพิ่ม UiDevice#pressKeyCodes เพื่อรองรับการกดแป้นหลายแป้นพร้อมกัน เช่น การกด POWER และ VOLUME_DOWN เพื่อถ่ายภาพหน้าจอ (22e525)
  • เพิ่ม UiDevice#setCompressedLayoutHierarchy และเลิกใช้งาน UiDevice#setCompressedLayoutHeirarchy เพื่อแก้ไขการพิมพ์ผิดในชื่อเมธอด (4e2f65)
  • ทําเครื่องหมาย UiAutomatorInstrumentationTestRunner ว่าเลิกใช้งานแล้วเนื่องจากจัดการ UiAutomatorTestCase ที่เลิกใช้งานแล้วและไม่จําเป็นต้องใช้อีกต่อไป (be6c85)
  • อัปเดตความล่าช้าระหว่าง UiObject2 MotionEvent เป็น 2 เท่าของอัตราการรีเฟรชของจอแสดงผลเพื่อจําลองท่าทางสัมผัสของผู้ใช้ได้ดียิ่งขึ้น (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 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • กำกับเนื้อหาเกี่ยวกับค่าว่างของเมธอดสาธารณะทั้งหมด
  • เปลี่ยนการแทรก MotionEvent เป็นแบบไม่พร้อมกันโดยมีการหน่วงเวลาสั้นๆ เพื่อให้ท่าทางสัมผัส 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)