自动化测试工具——Appium如何定位元素

本文详细介绍了Appium中通过ID、ClassName、AccessibilityID、XPath、CSSSelector和NAME定位元素的方法,以及不同写法的区别,强调了新By对象参数化的优点和传统写法的局限性。
摘要由CSDN通过智能技术生成

一、Appium中定位元素的主要方法:

from appium.webdriver.common.appiumby import AppiumBy

1、通过ID定位

driver.find_element(by=AppiumBy.ID, value="your_resource_id")

2、通过Class Name定位

driver.find_element(by=AppiumBy.ClassName, value="your_class_name")

注:不同的控件可能有相同的类名,因此仅依赖类名定位可能会产生非唯一结果。为了更准确地定位元素,通常建议结合其它属性(如ID、Accessibility ID、XPath等)进行定位。

3、通过Accessibility ID定位

driver.find_element(by=AppiumBy.AccessibilityID, value="your_accessibility_id")

注:通过元素的可访问性标识(Accessibility Identifier)来定位。

value="your_accessibility_id" 是指你想要查找的具体可访问性标识的值。在Android中,这通常对应于元素的contentDescription属性(也可以显式设置accessibilityId属性)。而在iOS中,Accessibility ID直接对应于元素的accessibilityIdentifier属性。

4、通过XPath定位

driver.find_element(by=AppiumBy.XPATH, value="your_xpath")

注:通过XPath路径来定位元素,过于复杂的XPath表达式可能导致定位性能下降,并且随着UI结构的变化,XPath表达式也可能变得不稳定。因此,在编写XPath表达式时,应尽量保持简洁和稳健。

5、通过CSS Selector定位 

driver.find_element(by=AppiumBy.CSS_SELECTOR, value="your_css_selector")

例子:定位一个class为'my-class'的div元素,CSS选择器表达式可以写作 '.my-class'

注:通过CSS选择器语法来定位元素,主要在处理Web内容时发挥作用,对于原生移动应用(非Web视图内的元素),通常不适用或者效果有限

6、通过名称定位

driver.find_element(by=AppiumBy.NAME, value="your_name")

注:在原生移动应用中,元素通常不会直接提供属name属性。在处理嵌入在原生应用中的WebView内容时,name属性定位仍然非常有用。

7、定位多个具有相同ID的元素,例如ID:

driver.find_elements(by=AppiumBy.ID,value="your_resource_id")[2]

二、定位写法区别

可能有小伙伴会疑问,

为什么还有会有这种写法:driver.find_element_by_id("your_resource_id")

那跟我上述的写法有什么区别呢?

driver.find_element(by=AppiumBy.ID, value="your_resource_id"),这种是Appium中基于新的By对象参数化的方式来定位元素,这种方式更加灵活且符合WebDriver规范。它可以方便地替换为其他定位策略,只需改变by后面的参数即可,例如AppiumBy.XPATH、AppiumBy.ACCESSIBILITY_ID等。

driver.find_element_by_id("your_resource_id"),这种是Appium早期或部分文档中展示的传统定位方式,它只定位单个元素,并假设定位策略是通过ID。这种方式已经不再推荐使用,因为在更新版本的Appium中可能会导致错误或不被支持,因为它不符合WebDriver统一的API设计。这种写法简洁明了,易于阅读和理解,但不够灵活,不能直接支持其他定位策略的参数化调用。

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值