android 控件xpath软件_Appium-关于appium的原生控件的 xpath 定位问题及常用方法

最近遇到的项目,发现很多元素,都没有标明id、text、content-desc,classname中又有很多是相同,导致无法定位

第一,appium1.5及之后的版本废弃了name属性(如name=账单,将不被支持用于定位),所以基本的定位就用下id就好了。其他的不多说了。

第二,下面就来说一下关于xpath的定位。主要场景为没有id或者没有text,或者text是一个不可控的值(或者叫会发生变化的值,就比如text字段为10元,可能这个10每次会变)的时候。其实简单点就是按路径定位包括一级或者多级路径。顺便说一下,路径方式分两种,一种是绝对路径(以第一个标签为参照物),另一种是相对路径(已其他已知的标签为参照物),且在定位的时候尽量采用相对路径的方式。

1,先说说有id或者text的场景使用xpath的情况。(有id或者name为什么不直接用?以下均为相对路径)

上面说的name被废弃了,但是xpath的写法如//android.widget.TextView[@text="账单"]是被支持的

就比如上面的"账单"和"我要"的id都是com.wlqq:id/title_left_btn,并且假设当前页面只有这两个位置id为前面写的,那么你在用id定位"账单"的时候,就可以用xpath了,因为id已经不唯一了。

用id定位“账单”的为:

xpath=(//android.widget.TextView[@resource-id="com.wlqq:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Appium通过使用XPath表达式来定位移动应用程序中的元素。XPath定位是Appium中最重要的一种定位方式,也是一种万能的定位方法XPath可以通过元素的id、text、class等属性来定位元素。如果元素id是唯一的,可以使用XPath通过id属性定位;如果text属性是唯一的,可以结合text属性定位;如果class属性唯一,可以利用class属性定位。XPath还可以组合定位,即同时匹配多个属性,例如text、id、class等。此外,XPath还可以实现层级定位,通过找到元素的父元素,然后定位子元素。 对于AppiumXPath定位方法,你可以使用`find_element_by_xpath`或`find_elements_by_xpath`方法来查找符合XPath表达式的单个元素或多个元素。以下是一个使用XPath定位的例子: ```python from appium import webdriver import time def android_driver(): desired_cap = {} desired_cap['platformName'] = "Android" desired_cap['platformVersion'] = '8.1.0' desired_cap['deviceName'] = 'HONOR9X' desired_cap['udid'] = '5fb5c4cc' #ip或者设备好 desired_cap['appPackage'] = 'com.ss.android.article.news' #要启动的应用包名 desired_cap['appActivity'] = 'com.ss.android.article.news.searchIcon2' #要启动的应用activity desired_cap['noReset'] = True #不需要重新登录 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__ == "__main__": driver = android_driver() time.sleep(10) try: element = driver.find_element_by_xpath("//*[@class='android.widget.LinearLayout']") except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") ``` 此代码片段中的`find_element_by_xpath`方法使用XPath表达式`"//*[@class='android.widget.LinearLayout']"`来查找具有`class`属性为`android.widget.LinearLayout`的元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值