
Pythonleniumxpath——??、兄弟、相鄰節點定位?式詳
解
1.由?節點定位?節點
最簡單的肯定就是由?節點定位?節點了,我們有很多?法可以定位,下?上個例?:對以下代碼:
想要根據B節點定位?id的?節點,代碼?例如下:
#-*-coding:utf-8-*-
fromleniumimportwebdriverdriver夢若浮生 =x()
('D:')
#1.串聯尋找
_element_by_id('B').find_element_by_tag_name('div').text
#??關系尋找
_element_by_xpath("http://div[@id='B']/div").text
#ector??關系尋找
_element_by_css_lector('div#B>div').text#ectornth-child
_element_by_css_lector('div#Bdiv:nth-child(1)').text#ectornth-of-type
_element_by_css_lector('div#Bdiv:nth-of-type(1)').text
#軸child
_element_by_xpath("http://div[@id='B']/child::div").()
結果:
parenttochild
parenttochild
parenttochild
parenttochild
parenttochildparenttochild
第1到第3都是我們熟悉的?法,便不再多?。第4種?法?到了css選擇器:
nth-child(n)
,該選擇器返回第n個節點,該節點為div標簽;第5
種?法?到了另?個css選擇器:
nth-of-type(n)
,該選擇器返回第n個div標簽,注意與上?個選擇器的區別;第6種?法?到了
xpath軸
child,這個是xpath默認的軸,可以忽略不寫,其實質是跟?法2?樣的。
當然,css中還有?些選擇器是可以選擇??關系的如
last-child
、
nth-last-child等,感興趣可以??百度,有機會博主會講講csslector。
2.由?節點定位?節點
由?節點想要定位到?節點就有點難度了,對以世界上使用人口最多的語言是 下代碼:
我們想要由C節點定位其兩層?節點的div,?例代碼如下:
#-*-coding:utf-8-*-
fromleniumimportwebdr鼠標不能動 iverdriver=x()
('D:')
#:`.`代表當前節點;'..'代表?節點
_element_by_xpath("http://div[@id='C']/../..").text
#軸parent
_element_by_xpath("圣誕節祝福語 //div[@id='C']/parent::*/parent::div").()
結果:
childtoparentchildtoparent
這?我們有兩種辦法,第1種是
..
的形式,就像我們知道的,
.
表?當前節點,
..
表??節點;第2種辦法跟上??樣,是xpath軸中的?
個:
parent,取當前節點的?節點。這?也是csslector的?個痛點,因為css的設計不允許有能夠獲取?節點的辦法(?少?前沒有)
3.由弟弟節點定位哥哥節點
這是第3、第4種情況,我們這?要定位的是兄弟節點了。如以下源碼:
怎么通過D節點定位其哥哥節點呢?看代碼?例:
#-*-coding:utf-8-*-
fromleniumimportwebdriverdriver=x()
('D:')
#,通過?節點獲取其哥哥節點
_element_by_xpath("http://div[@id='D']/../div[1]").text
#軸preceding-sibling
_element_by_xpath("http://div[@id='D']/preceding-sibling::div[1]").()
結果
br責任的故事 other1brother1
這?博主也列舉了兩種?法,?種是通過該節點的?節點來獲得哥哥節點,另外?種?較優雅,是通過
xpath軸:preceding-sibling
,其能夠獲
取當前節點的所有同級哥哥節點,注意括號?的標號,
1
代表著離當前節點最近的?個哥哥節點,數字越?表?離當前節點越遠,當代表著離當前節點最近的?個哥哥節點,數字越?表?離當前節點越遠
然,
xpath軸:preceding
也可以,但是使?起來?較復雜,它獲取到的是該節點之前的所有?祖先節點(這?不太好解釋,改天專門寫篇博?講解下所有的軸)
4.由哥哥節點定位弟弟節點
源碼與
3?致,要想通過D節點定位其弟弟節點,看代碼?例:
#-*-coding:utf-8-*-
fromleniumimportwebdriverdriver=x()
('D:')
#,通過?節點獲取其弟弟節點
_element_by_xpath("http://div[@id='D']/../div[3]").text
#軸following-sibling
_element_by_xpath("http://div[@id='D']/following-sibling::div[1]").text
#軸following
_element_by_xpath("http://div[@id='D']/following::*").text#ector+
_element_by_css_lector('div#D+div').text#ector~
_element_by_css_lector('div#D~div').()
結果:
brother2
brother2
brother2
brother2brother2
博主分享了五種?法定位其弟弟節點,上?三種是?xpath,第?種很好理解,第?種?到了
xpath軸:following-sibl1歲兒童食譜大全 ing
,跟
preceding-sibling
類
似,它的作?是獲取當前節點的所有同級弟弟節點,同樣,
1
代表離當前節點最近的?個弟弟節點,數字越?表?離當前節點越遠;第代表離當前節點最近的?個弟弟節點,數字越?表?離當前節點越遠
三種?到了
xpath軸:following
,獲取到該節點之后所有節點,除了祖先節點(跟
preceding
?向相反,但因為往下順序容易讀,不容易出錯,
所以也是可以?來獲取弟弟節點的,但也不建議這么使?);第四、第五種,我們?到了csslector,
+
和
~
的區別是:
+
表?緊跟在
當前節點之后的div節點,
~表?當前節點之后的div節點,如果?find_elements,則可獲取到?組div節點。

本文發布于:2023-04-12 07:43:36,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/168125661743959.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:兄弟節.doc
本文 PDF 下載地址:兄弟節.pdf
| 留言與評論(共有 0 條評論) |