as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

Appium Vega驱动程序中的定位器策略

Appium Vega驱动程序中的定位器策略

“定位器策略”是在测试自动化期间用于在应用中查找和识别用户界面 (UI) 元素的方法。这些策略作为搜索模式,告诉Appium如何在屏幕上定位特定元素,例如按钮、文本字段或其他用户界面组件。

支持的策略

Appium Vega驱动程序支持UiSelector和XML路径语言 (XPath)。此版本不支持其他选择器策略。

UiSelector

一种特定于平台的定位器策略,利用原生自动化框架来识别用户界面元素。它可以根据属性和层次关系对元素选择进行精确控制。

用法示例:

选择一个选项卡查看用法示例。


element = driver.find_element("UiSelector", '{"args": {"text": "元素文本"}}')

element = driver.findElement(AppiumBy.ByAndroidUIAutomator.androidUIAutomator("{\"args\": {\"role\":\"edit\"} }")`\

XPath

一种查询语言,支持在类似XML的结构中导航和选择元素。

用法示例:

选择一个选项卡查看用法示例。


element = driver.find_element(by="xpath", value="//[contains(@description, \"Music\")]"

element = driver.findElement(AppiumBy.xpath("//[contains(@description, \"Music\")]"));

const element = await driver.$('//[contains(@description, \"Music\")]');

element = @driver.wait { |d| d.find_element :xpath, '//[contains(@description, \"Music\")]' }

关键组件

  1. 轴 - 指定搜索方向,例如后代轴、祖先轴和后续轴。

     // 后代轴
     "//button"  // 所有按钮后代
     "/button"   // 直接子按钮
    
  2. 节点测试 - 指定要选择的节点类型,例如element、attribute或text()。

     "//*"           // 任何元素
     "//button"      // 按钮元素
     "//text()"      // 文本节点
    
  3. 谓词 - 根据各种条件(例如属性值、位置或自定义函数)筛选所选节点。

     "//button[@text='Login']"              // 精确匹配
     "//button[contains(@text, 'Login')]"   // 部分匹配
    

特殊用例

// 根元素
driver.findElement(By.xpath("/root"));

// 按描述划分的元素
driver.findElement(By.xpath("//*[contains(@description, 'Music')]"));

// 复杂的分层选择
driver.findElement(By.xpath("//parent/*[2]//child[@visible='true']"));

选择器策略的比较

功能 UiSelector XPath
平台支持 特定于平台 跨平台
性能 通常更快 可能会慢一点
可靠性 更可靠 可能会因用户界面更改而中断
复杂性 中等 可能较复杂
维护 易于进行特定于平台的测试 更适合跨平台测试
调试支持 有原生工具可用 标准XML工具
内存使用情况 较低 对于复杂的查询较高

最佳实践

  1. 选择正确的策略

    • 使用UiSelector进行特定于平台的测试
    • 使用XPath实现跨平台兼容性
    • 当性能至关重要时,首选UiSelector
  2. 元素位置

    • 尽可能使用唯一标识符
    • 避免使用绝对路径
    • 让选择器尽可能保持简单
    • 定期验证选择器的可靠性
  3. 性能注意事项

    • 复杂的XPath查询可能会影响测试执行时间
    • 缓存常用元素
    • 如果可用,请使用应用专用ID
  4. 维护提示

    • 文档定位器策略
    • 定期查看定位器
    • 在用户界面更改时进行更新
    • 保持跨平台兼容性
    • 在测试代码中使用有意义的名称

Last updated: 2025年9月30日