直接选择:
1.poco(text='买入').click()
2.poco("android.widget.ImageView").click()
相对选择、空间选择:
3.poco(text/name).parent().child()[0].click()
正则表达式:
4.list=poco(textMatches=".*ETF")
今天主要想记录下相对选择是怎么做的。
child():当前节点的子节点
children():当前节点的所有子节点
offspring():当前节点的子孙节点
parent():当前节点的父节点
sibling():当前节点的兄弟节点
child()和children()的使用区别:child()是有参数的,而children不带参数;
child(text=”ETF”)[0],不带参数的情况下,二者使用起来是没有区别的,都可以使用for 循环进行遍历,查找要寻找的元素。
注意:
使用相对选择+空间选择进行唯一定位页面上元素时,有时候会出现下标打印错误,需要【向下寻遍历】和【向上遍历】结合起来使用;并且同一次用位置信息打印时,不要滑动页面,否则打印出来的元素的位置信息会出现变化。
例如:使用相对选择(以“名称”为起点,找到“标普ETF”)找到目标元素的过程;
1.先确定要找的元素的位置; 标普ETF 【0.22,0.470625】
2.找到目标元素的父节点 【0.22,0.483125】
3.找到目标节点父节点的父节点 【0.22,0.630625】
4.可以看到,【相对节点】的【父节点】 和目标节点的【爷爷】节点 同为【兄弟节点】,向上找到爷爷节点就ok了。
5.【相对节点】的【爷爷节点】 的【子孙节点】肯定能找到 我们要找的目标元素。
6.根据打印出来的下标 child()[3],发现打印出来的位置并不是我们要找的【元素的爷爷节点】的位置 所以3下标不对,一个个遍历,从child()[0]开始,打印到child()[11]的时候找到了。
7.遍历child()[11]找到【爷爷节点】
8.最后,一层一层继续向下遍历,直到找到目标元素;
a=poco(text=‘名称’).parent().parent().child()[11].child()[0].child()[0]
a1=poco(text=‘名称’).parent().parent().child()[11].child()[1].child()[0]
print(a,a.get_text(),a.attr(‘pos’))
print(a1,a1.get_text(),a1.attr(‘pos’))
poco(text=‘名称’).parent().parent().child(name=‘android.widget.Image’)[0].click()
poco(text=‘名称’).parent().parent().child(name=‘android.widget.Image’)[1].click()