亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

selenium獲取元素定位的方法總結(jié)(動(dòng)態(tài)獲取元素)

 更新時(shí)間:2024年02月01日 11:03:55   作者:墨痕訴清風(fēng)  
要想操作一個(gè)元素,首先應(yīng)該識別這個(gè)元素,人有各種的特征(屬性),可以通過其特征找到人,同理,界面的某個(gè)元素會(huì)有各種的特征(屬性),可以通過這個(gè)屬性找到這對象,本文給大家介紹了python?selenium獲取元素定位的8種方法,需要的朋友可以參考下

元素

要想操作一個(gè)元素,首先應(yīng)該識別這個(gè)元素。人有各種的特征(屬性),可以通過其特征找到人,如通過身份證號、姓名、家庭住址。同理,界面的某個(gè)元素會(huì)有各種的特征(屬性),可以通過這個(gè)屬性找到這對象。

例如:

driver.find_element(By.CSS_SELECTOR, 'img[title="點(diǎn)擊圖片重新獲取驗(yàn)證碼"]')

該代碼尋找屬性標(biāo)識著為 “點(diǎn)擊圖片重新獲取驗(yàn)證碼圖” 的圖片驗(yàn)證碼。

元素:由標(biāo)簽頭 + 標(biāo)簽尾 + 標(biāo)簽頭和標(biāo)簽尾包括的文本內(nèi)容

元素定位最終就是通過元素的信息或者元素的層級結(jié)構(gòu)來進(jìn)行元素定位

查看元素信息

選中元素,右鍵點(diǎn)擊“檢查”,即可查看到該控件的所有屬性 

元素定位

selenium提供了常用的8種方法:

定位一個(gè)元素

定位多個(gè)元素

  • 通過元素id定位
    • find_element_by_id

    • find_elements_by_id

  • 通過元素name定位

    • find_element_by_name

    • find_elements_by_name

  • 通過xpath表達(dá)式定位

    • find_element_by_xpath

    • find_elements_by_xpath

  • 通過完整超鏈接定位

    • find_element_by_link_text

    • find_elements_by_link_text

  • 通過部分鏈接定位

    • find_element_by_partial_link_text

    • find_elements_by_partial_link_text

  • 通過標(biāo)簽定位

    • find_element_by_tag_name

    • find_elements_by_tag_name

  • 通過類名進(jìn)行定位

    • find_element_by_class_name

    • find_elements_by_class_name

  • 通過css選擇器進(jìn)行定位

    • find_element_by_css_selector

    • find_elements_by_css_selector

通過元素id定位

find_element_by_id("kw")?

通過元素name定位

find_element_by_id("kw")?

通過xpath表達(dá)式定位

Xpath是一種在XMLHTML文檔中查找信息的語言,通過Xpath路徑來定位元素的時(shí)候也是分絕對路徑和相對路徑。

絕對路徑

鼠標(biāo)單機(jī)右鍵-Copy-Copy full XPath即可獲取其XPath絕對路徑

/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input

selenium通過xpath定位語句: 

find_element_by_xpath('/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input')

相對路徑

鼠標(biāo)單機(jī)右鍵-Copy-Copy XPath即可獲取其XPath相對路徑

//*[@id="kw"]

selenium通過xpath定位語句: 

find_element_by_xpath('//*[@id="kw"]')

相對路徑的xpath定位表達(dá)式更加簡潔,但是偶然會(huì)出現(xiàn)錯(cuò)誤的尋址,但如果可以推薦使用相對路徑的xpath表達(dá)式。

通過完整超鏈接定位

find_element_by_link_text('文庫')

通過部分鏈接定位

find_element_by_partial_link_text('庫')

通過標(biāo)簽定位

HTML是通過tag來定義一類功能的,比如input是輸入,table是表格,tbody是表格主體等。每個(gè)元素其實(shí)就是一個(gè)tag,由于一個(gè)tag用來定義一類功能,一個(gè)網(wǎng)頁往往有很多同類tag,所以很難通過tag去區(qū)分不同的元素。

find_element_by_tag_name('input')?

通過類名進(jìn)行定位

find_element_by_class_name('s_ipt')

如果class的值中有空格,則需要借助CSS選擇器。

通過css選擇器進(jìn)行定位

Selenium官網(wǎng)當(dāng)中是更加推薦Css Selector()方法來進(jìn)行頁面元素的定位的,Css定位可以通過id選擇器、class選擇器、標(biāo)簽選擇器和屬性選擇器。

id選擇器

通過 # 來定義,通過元素的id屬性來定位

find_element_by_css_selector("#kw")?

class選擇器

通過 .來定義,通過元素的class屬性來定位

find_element_by_css_selector(".s_ipt")?

標(biāo)簽選擇器

通過標(biāo)簽的名字來定位元素

find_element_by_css_selector("input")?

屬性選擇器

find_element_by_css_selector('[id="kw"]')?
find_element_by_css_selector('input[id="kw"]')?

定位帶空格的復(fù)合class屬性

以百度上方欄目元素為例,其class屬性帶有空格。

class="s-top-left-new?s-isindex-wrap"

直接通過class屬性定位是會(huì)報(bào)錯(cuò)的,需要通過css selector按class屬性定位。

find_element_by_css_selector('[class="s-top-left-new?s-isindex-wrap"]')

selenium 4.0以后版本用法

from?selenium.webdriver.common.by?import?By
element?=?web.find_element(By.ID,'kw')
element?=?web.find_element(By.NAME,'wd')
element?=?web.find_element(By.CLASS_NAME,'s_ipt')
element?=?web.find_element(By.TAG_NAME,'input')
element?=?web.find_element(By.LINK_TEXT,'新聞')
element?=?web.find_element(By.PARTIAL_LINK_TEXT,'聞')
element?=?web.find_element(By.XPATH,'//*[@id="kw"]')
element?=?web.find_element(By.CSS_SELECTOR,'#kw')
element?=?web.find_element(By.CSS_SELECTOR,'[id="kw"]')
element?=?web.find_element(By.CSS_SELECTOR,'input[id="kw"]')

以上就是selenium獲取元素定位的8種方法總結(jié)(動(dòng)態(tài)獲取元素)的詳細(xì)內(nèi)容,更多關(guān)于selenium元素定位的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬取氣象臺每日天氣圖代碼

    python爬取氣象臺每日天氣圖代碼

    大家好,本篇文章主要講的是python爬取氣象臺每日天氣圖代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式

    Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 使用Python獲取JS加載的數(shù)據(jù)的多種實(shí)現(xiàn)方法

    使用Python獲取JS加載的數(shù)據(jù)的多種實(shí)現(xiàn)方法

    在當(dāng)今的互聯(lián)網(wǎng)時(shí)代,網(wǎng)頁數(shù)據(jù)的動(dòng)態(tài)加載已經(jīng)成為一種常見的技術(shù)手段,許多現(xiàn)代網(wǎng)站通過JavaScript(JS)動(dòng)態(tài)加載內(nèi)容,這使得傳統(tǒng)的靜態(tài)網(wǎng)頁爬取方法難以奏效,所以本文將詳細(xì)介紹如何使用Python來爬取JavaScript加載的數(shù)據(jù),需要的朋友可以參考下
    2025-05-05
  • Python關(guān)鍵字yield的使用場景及用法詳解

    Python關(guān)鍵字yield的使用場景及用法詳解

    在 Python 編程語言中,yield是一個(gè)至關(guān)重要的關(guān)鍵字,它用于定義生成器函數(shù)(generator function),yield的出現(xiàn)使得 Python 能夠優(yōu)雅地實(shí)現(xiàn)惰性計(jì)算(lazy evaluation),本文給大家詳細(xì)介紹了Python中關(guān)鍵字yield的使用場景及用法,需要的朋友可以參考下
    2025-06-06
  • Python?flask?sqlalchemy的簡單使用及常用操作

    Python?flask?sqlalchemy的簡單使用及常用操作

    這篇文章主要介紹了Python?flask?sqlalchemy的簡單使用及常用操作,在python中,常用的ORM工具就是sqlalchemy了。下面就以一個(gè)簡單的flask例子來說明吧,需要的小伙伴可以參考一下
    2022-08-08
  • Python數(shù)據(jù)類型詳解(一)字符串

    Python數(shù)據(jù)類型詳解(一)字符串

    簡單的說字符串String就是使用引號定義的一組可以包含數(shù)字,字母,符號(非特殊系統(tǒng)符號)的集合。今天我們就來詳細(xì)探討下Python數(shù)據(jù)類型中的字符串
    2016-05-05
  • jupyter notebook如何使用matlab

    jupyter notebook如何使用matlab

    這篇文章主要介紹了jupyter notebook如何使用matlab問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python使用Paramiko控制linux第三方庫

    Python使用Paramiko控制linux第三方庫

    這篇文章主要介紹了Python使用Paramiko控制linux第三方庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • PyTorch、torchvision和Python版本的對應(yīng)關(guān)系

    PyTorch、torchvision和Python版本的對應(yīng)關(guān)系

    使用PyTorch時(shí),選擇合適的Python版本是至關(guān)重要的,錯(cuò)誤的版本組合可能導(dǎo)致各種兼容性問題,本文就來介紹一下PyTorch、torchvision與Python版本匹配,感興趣的可以了解一下
    2024-03-03
  • Python的Django框架中settings文件的部署建議

    Python的Django框架中settings文件的部署建議

    這篇文章主要介紹了Python的Django框架中settings文件的部署建議,包括對local_settings的弊病的一些簡單分析,需要的朋友可以參考下
    2015-05-05

最新評論