最新消息:20210917 已从crifan.com换到crifan.org

【已解决】uiautomator2中用xpath如何查找某元素下面的某层级的子元素

元素 crifan 958浏览 0评论
折腾:
【未解决】uiautomator2模拟安卓浏览器的百度搜索后去获取和解析搜索结果
期间,希望对于:
找到 id是results后,找其下的子元素
然后去试试各种写法:
从当前的xpath下面去找:
resultsSelector = d.xpath("//*[@resource-id='results']")

titleButtonSelectorList = resultsSelector.xpath("./android.widget.Button[@clickable='true']").all()
始终找不到。
去搞清楚xpath的写法
uiautomator2/XPATH.md at master · openatx/uiautomator2 (github.com)
# 多个条件定位, 类似于AND
    d.xpath('//android.widget.Button').xpath('//*[@text="私人FM"]')
试试:
titleButtonSelectorList = resultsSelector.xpath("//android.widget.Button[@clickable='true']").all()
依旧是0个
找不到
# 遍历所有匹配的元素
for el in d.xpath('//android.widget.EditText').all():

等价于 d.xpath('//*[@resource-id="android:id/list"]/android.widget.TextView').all()
是可以用all()的啊
直接去写试试
titleButtonSelectorList = d.xpath("//*[@resource-id='results']//android.widget.Button[@clickable='true']")
结果:
可以找到了:
再去加上调试,用all(),可以获取到值:
titleButtonSelectorList.all()
用代码:
titleButtonSelectorList = d.xpath("//*[@resource-id='results']//android.widget.Button[@clickable='true']").all()
结果,就可以找到元素了
【总结】
此处,想要找到results下面的button,则对应语法是:
titleButtonSelectorList = d.xpath("//*[@resource-id='results']//android.widget.Button[@clickable='true']").all()
即可找到对应元素的列表
注意:
分开写
resultsSelector = d.xpath("//*[@resource-id='results']")
titleButtonSelectorList = resultsSelector.xpath("//android.widget.Button[@clickable='true']").all()
却就是找不到元素。。。
暂时不知道为何。

转载请注明:在路上 » 【已解决】uiautomator2中用xpath如何查找某元素下面的某层级的子元素

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.184 seconds, using 23.36MB memory