最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python selenium 父子、兄弟、相鄰節(jié)點(diǎn)定位方式詳解

 更新時(shí)間:2016年09月15日 11:46:38   作者:huilan_same  
這篇文章主要介紹了Python selenium 父子、兄弟、相鄰節(jié)點(diǎn)定位方式詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

今天跟大家分享下selenium中根據(jù)父子、兄弟、相鄰節(jié)點(diǎn)定位的方法,很多人在實(shí)際應(yīng)用中會(huì)遇到想定位的節(jié)點(diǎn)無(wú)法直接定位,需要通過(guò)附近節(jié)點(diǎn)來(lái)相對(duì)定位的問(wèn)題,但從父節(jié)點(diǎn)定位子節(jié)點(diǎn)容易,從子節(jié)點(diǎn)定位父節(jié)點(diǎn)、定位一個(gè)節(jié)點(diǎn)的哥哥節(jié)點(diǎn)就一籌莫展了,別急,且看博主一步步講解。

1. 由父節(jié)點(diǎn)定位子節(jié)點(diǎn)

最簡(jiǎn)單的肯定就是由父節(jié)點(diǎn)定位子節(jié)點(diǎn)了,我們有很多方法可以定位,下面上個(gè)例子:

對(duì)以下代碼:

<html>
<body>
<div id="A">
<!--父節(jié)點(diǎn)定位子節(jié)點(diǎn)-->
<div id="B">
<div>parent to child</div>
</div>
</div>
</body>
</html>

想要根據(jù) B節(jié)點(diǎn) 定位無(wú)id的子節(jié)點(diǎn),代碼示例如下:

# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('D:\\py\\AutoTestFramework\\src\\others\\test.html')
# 1.串聯(lián)尋找
print driver.find_element_by_id('B').find_element_by_tag_name('div').text
# 2.xpath父子關(guān)系尋找
print driver.find_element_by_xpath("http://div[@id='B']/div").text
# 3.css selector父子關(guān)系尋找
print driver.find_element_by_css_selector('div#B>div').text
# 4.css selector nth-child
print driver.find_element_by_css_selector('div#B div:nth-child(1)').text
# 5.css selector nth-of-type
print driver.find_element_by_css_selector('div#B div:nth-of-type(1)').text
# 6.xpath軸 child
print driver.find_element_by_xpath("http://div[@id='B']/child::div").text
driver.quit()

結(jié)果:

parent to child
parent to child
parent to child
parent to child
parent to child
parent to child

第1到第3都是我們熟悉的方法,便不再多言。第4種方法用到了css選擇器:nth-child(n),該選擇器返回第n個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)為div標(biāo)簽;第5種方法用到了另一個(gè)css選擇器: nth-of-type(n),該選擇器返回第n個(gè)div標(biāo)簽,注意與上一個(gè)選擇器的區(qū)別;第6種方法用到了xpath軸 child,這個(gè)是xpath默認(rèn)的軸,可以忽略不寫,其實(shí)質(zhì)是跟方法2一樣的。

當(dāng)然,css中還有一些選擇器是可以選擇父子關(guān)系的如last-child、nth-last-child等,感興趣可以自行百度,有機(jī)會(huì)博主會(huì)講講css selector。

2. 由子節(jié)點(diǎn)定位父節(jié)點(diǎn)

由子節(jié)點(diǎn)想要定位到父節(jié)點(diǎn)就有點(diǎn)難度了,對(duì)以下代碼:

<html>
<body>
<div id="A">
<!--子節(jié)點(diǎn)定位父節(jié)點(diǎn)-->
<div>
<div>child to parent
<div>
<div id="C"></div>
</div>
</div>
</div>
</div>
</body>
</html>

我們想要由 C節(jié)點(diǎn) 定位其兩層父節(jié)點(diǎn)的div,示例代碼如下:

# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('D:\\py\\AutoTestFramework\\src\\others\\test.html')
# 1.xpath: `.`代表當(dāng)前節(jié)點(diǎn); '..'代表父節(jié)點(diǎn)
print driver.find_element_by_xpath("http://div[@id='C']/../..").text
# 2.xpath軸 parent
print driver.find_element_by_xpath("http://div[@id='C']/parent::*/parent::div").text
driver.quit()

結(jié)果:

child to parent
child to parent

這里我們有兩種辦法,第1種是 .. 的形式,就像我們知道的,. 表示當(dāng)前節(jié)點(diǎn),.. 表示父節(jié)點(diǎn);第2種辦法跟上面一樣,是xpath軸中的一個(gè):parent,取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。這里也是css selector的一個(gè)痛點(diǎn),因?yàn)閏ss的設(shè)計(jì)不允許有能夠獲取父節(jié)點(diǎn)的辦法(至少目前沒(méi)有)

3. 由弟弟節(jié)點(diǎn)定位哥哥節(jié)點(diǎn)

這是第3、第4種情況,我們這里要定位的是兄弟節(jié)點(diǎn)了。如以下源碼:

<html>
<body>
<div id="A">
<!--下面兩個(gè)節(jié)點(diǎn)用于兄弟節(jié)點(diǎn)定位-->
<div>brother 1</div>
<div id="D"></div>
<div>brother 2</div>
</div>
</body>
</html>

怎么通過(guò) D節(jié)點(diǎn) 定位其哥哥節(jié)點(diǎn)呢?看代碼示例:

# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('D:\\Code\\py\\AutoTestFramework\\src\\others\\test.html')
# 1.xpath,通過(guò)父節(jié)點(diǎn)獲取其哥哥節(jié)點(diǎn)
print driver.find_element_by_xpath("http://div[@id='D']/../div[1]").text
# 2.xpath軸 preceding-sibling
print driver.find_element_by_xpath("http://div[@id='D']/preceding-sibling::div[1]").text
driver.quit()

結(jié)果

brother 1
brother 1

這里博主也列舉了兩種方法,一種是通過(guò)該節(jié)點(diǎn)的父節(jié)點(diǎn)來(lái)獲得哥哥節(jié)點(diǎn),另外一種比較優(yōu)雅,是通過(guò) xpath軸:preceding-sibling,其能夠獲取當(dāng)前節(jié)點(diǎn)的所有同級(jí)哥哥節(jié)點(diǎn),注意括號(hào)里的標(biāo)號(hào),1 代表著離當(dāng)前節(jié)點(diǎn)最近的一個(gè)哥哥節(jié)點(diǎn),數(shù)字越大表示離當(dāng)前節(jié)點(diǎn)越遠(yuǎn),當(dāng)然,xpath軸:preceding也可以,但是使用起來(lái)比較復(fù)雜,它獲取到的是該節(jié)點(diǎn)之前的所有非祖先節(jié)點(diǎn)(這里不太好解釋,改天專門寫篇博文講解下所有的軸)

4. 由哥哥節(jié)點(diǎn)定位弟弟節(jié)點(diǎn)

源碼與 3 一致,要想通過(guò) D節(jié)點(diǎn) 定位其弟弟節(jié)點(diǎn),看代碼示例:

# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('D:\\Code\\py\\AutoTestFramework\\src\\others\\test.html')
# 1.xpath,通過(guò)父節(jié)點(diǎn)獲取其弟弟節(jié)點(diǎn)
print driver.find_element_by_xpath("http://div[@id='D']/../div[3]").text
# 2.xpath軸 following-sibling
print driver.find_element_by_xpath("http://div[@id='D']/following-sibling::div[1]").text
# 3.xpath軸 following
print driver.find_element_by_xpath("http://div[@id='D']/following::*").text
# 4.css selector +
print driver.find_element_by_css_selector('div#D + div').text
# 5.css selector ~
print driver.find_element_by_css_selector('div#D ~ div').text
driver.quit()

結(jié)果:

brother 2
brother 2
brother 2
brother 2
brother 2

博主分享了五種方法定位其弟弟節(jié)點(diǎn),上面三種是用xpath,第一種很好理解,第二種用到了xpath軸:following-sibling,跟preceding-sibling類似,它的作用是獲取當(dāng)前節(jié)點(diǎn)的所有同級(jí)弟弟節(jié)點(diǎn),同樣,1 代表離當(dāng)前節(jié)點(diǎn)最近的一個(gè)弟弟節(jié)點(diǎn),數(shù)字越大表示離當(dāng)前節(jié)點(diǎn)越遠(yuǎn);第三種用到了xpath軸:following,獲取到該節(jié)點(diǎn)之后所有節(jié)點(diǎn),除了祖先節(jié)點(diǎn)(跟preceding方向相反,但因?yàn)橥马樞蛉菀鬃x,不容易出錯(cuò),所以也是可以用來(lái)獲取弟弟節(jié)點(diǎn)的,但也不建議這么使用);第四、第五種,我們用到了css selector,+ 和 ~ 的區(qū)別是: + 表示緊跟在當(dāng)前節(jié)點(diǎn)之后的div節(jié)點(diǎn),~ 表示當(dāng)前節(jié)點(diǎn)之后的div節(jié)點(diǎn),如果用find_elements,則可獲取到一組div節(jié)點(diǎn)。

以上所述是小編給大家介紹的Python selenium 父子、兄弟、相鄰節(jié)點(diǎn)定位方式詳解的全部敘述,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的,在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 一文詳解Python中哈希表的使用

    一文詳解Python中哈希表的使用

    哈希表或稱為散列表,是一種常見的、使用頻率非常高的數(shù)據(jù)存儲(chǔ)方案。本文將站在開發(fā)者的角度,帶著大家一起探究哈希的世界,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • python針對(duì)Oracle常見查詢操作實(shí)例分析

    python針對(duì)Oracle常見查詢操作實(shí)例分析

    這篇文章主要介紹了python針對(duì)Oracle常見查詢操作,結(jié)合實(shí)例形式分析了python針對(duì)Oracle常見的子查詢、多表查詢等相關(guān)原理、操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Python容器類型公共方法總結(jié)

    Python容器類型公共方法總結(jié)

    這篇文章主要總結(jié)了Python容器類型公共方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估

    Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估

    這篇文章主要為大家介紹了Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Python實(shí)現(xiàn)簡(jiǎn)單的代理服務(wù)器

    Python實(shí)現(xiàn)簡(jiǎn)單的代理服務(wù)器

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的代理服務(wù)器,可實(shí)現(xiàn)代理服務(wù)器基本的包轉(zhuǎn)發(fā)功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Pandas的數(shù)據(jù)過(guò)濾實(shí)現(xiàn)

    Pandas的數(shù)據(jù)過(guò)濾實(shí)現(xiàn)

    這篇文章主要介紹了Pandas的數(shù)據(jù)過(guò)濾實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python排序算法之選擇排序

    python排序算法之選擇排序

    這篇文章主要介紹了python排序算法之選擇排序,選擇排序表示從無(wú)序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無(wú)序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果,需要的朋友可以參考下
    2023-04-04
  • django 使用 PIL 壓縮圖片的例子

    django 使用 PIL 壓縮圖片的例子

    今天小編就為大家分享一篇django 使用 PIL 壓縮圖片的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python實(shí)現(xiàn)監(jiān)控阿里云賬戶余額功能

    python實(shí)現(xiàn)監(jiān)控阿里云賬戶余額功能

    這篇文章主要介紹了python實(shí)現(xiàn)監(jiān)控阿里云賬戶余額功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 詳解Python裝飾器之@property

    詳解Python裝飾器之@property

    今天帶大家學(xué)習(xí)python裝飾器的相關(guān)知識(shí),文中對(duì)Python @property做了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

随州市| 当阳市| 翁牛特旗| 徐州市| 渭源县| 乌海市| 织金县| 红桥区| 韩城市| 红安县| 北川| 凤冈县| 揭西县| 三亚市| 红安县| 长岭县| 奎屯市| 唐河县| 邮箱| 兖州市| 南京市| 台前县| 牡丹江市| 宣威市| 嫩江县| 福海县| 澎湖县| 交口县| 崇州市| 纳雍县| 中江县| 遂平县| 武宣县| 香港| 凤翔县| 略阳县| 东辽县| 磐安县| 加查县| 正镶白旗| 隆林|