Android UIAutomator2 是一个用于自动化用户界面测试的框架,它可以对 Android 应用程序中的各种 UI 元素进行定位和操作。以下是 UIAutomator2 支持的一些主要元素定位方式:
ID 定位:通过元素的 ID 进行定位。这是最直接和常用的定位方式。
element = driver.find_element_by_id("element_id")
资源 ID 定位:通过资源的 ID 名称进行定位,这通常与 XML 布局文件中的资源 ID 相关联。
element = driver.find_element_by_resource_id("android:id/element_id")
类名定位:通过元素的类名进行定位。
element = driver.find_element_by_class_name("ClassName")
标签名定位:通过元素的标签名进行定位。
element = driver.find_element_by_tag_name("TagName")
文本定位:通过元素的文本内容进行定位。
element = driver.find_element_by_text("Element Text")
属性定位:通过元素的属性进行定位,例如 content-desc
、text
、checked
等。
element = driver.find_element_by_android_uiautomator(
"new UiSelector().textContains(\"Element Text\")"
)
组合条件定位:可以使用多个条件组合来定位元素,例如同时满足类名和文本内容。
element = driver.find_element_by_android_uiautomator(
"new UiSelector().className(\"ClassName\").textContains(\"Element Text\")"
)
XPath 定位:虽然 UIAutomator2 不直接支持 XPath,但可以通过 android.support.test.uiautomator
库中的 UiDevice
类使用 XPath 进行定位。
element = driver.find_element_by_xpath("//TagName[@attribute='value']")
视图位置定位:通过元素的坐标进行定位。
element = driver.find_element_by_position(x, y)
可见性定位:通过元素的可见性进行定位,例如 VISIBLE
、INVISIBLE
或 GONE
。
element = driver.find_element_by_android_uiautomator(
"new UiSelector().visibility(android.view.View.VISIBLE)"
)
这些定位方式可以单独使用,也可以组合使用以满足复杂的测试需求。在使用 UIAutomator2 进行自动化测试时,建议优先考虑使用 ID 或资源 ID 定位,因为它们更稳定且易于维护。