App自动化测试 元素定位(6)Xpath 定位

使用 Xpath 定位元素,在 Selenium 中也比较常用,有过 Selenium 定位学习经验的同学应该都知道。

在 Appium 的定位过程中,语法与 Selenium 中类似。区别在于使用的标识层级的属性不一样。

  • 在 web 中使用标签名
  • 在 Android 中使用 class 属性
//android.widget.LinearLayout[@resource-id="com.insthub.ecmobile:id/profile_head_address_manage"] \
   /android.widget.ImageView[1]
  • 在 iOS 中使用 type属性
//XCUIElementTypeTable/XCUIElementTypeStaticText[@name="测试"]

在 App中,元素有所变化,但是整体来说,思路都一样。

Xpath,path 就是路径的意思,顾名思义就是通过路径去定位元素。对当前元素,如果id、class name 等方式都无法唯一定位时,就需要通过 Xpath 来定位。

Xpath 定位思路为:从当前需要定位的元素开始,找上级元素,直到找到一个能唯一定位的上级元素,然后从这个能唯一定位的上级元素开始往下写。相当于是告诉Appium,从能唯一定位的地方开始查找。

与 web UI 自动化一样,Xpath 执行效率是比较慢的。特别是在 iOS 系统中,原生并不支持 Xpath,定位非常慢。

driver.find_element_by_xpath('//android.widget.LinearLayout[@resource-id="com.insthub.ecmobile:id/profile_head_address_manage"] \
/android.widget.ImageView[1]')

对于只有 text 唯一的,那么写法可以简写为:

driver.find_element_by_xpath('//*[@text="我的收藏"]')

注意,这里使用的是 text 属性,所以使用 @text ,在 web 测试中使用时常见的写法为 text() ,表示 html 中的文本。

你可能感兴趣的:(App自动化测试 元素定位(6)Xpath 定位)