直接選擇:
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()