Python實(shí)現(xiàn)網(wǎng)頁自動(dòng)化-Selenium定位元素方法(三)

發(fā)布時(shí)間:2022-03-23 16:48:20  |  來源:騰訊網(wǎng)  

selenium定位元素方法

上一節(jié)我們學(xué)會(huì)了如何使用瀏覽器來查找網(wǎng)頁元素,本節(jié)主要講述如何將網(wǎng)頁元素告知Selenium,并讓它自動(dòng)操控網(wǎng)頁。

Selenium定位網(wǎng)頁元素主要是通過元素的屬性值或者元素在HTML里的路徑位置,定位方式一共有8種:

# 通過屬性 id 和 name 來實(shí)現(xiàn)登錄

1) find_element_by_id()

2) find_element_by_name()

# 通過HTML標(biāo)簽類型和屬性class實(shí)現(xiàn)定位

3) find_element_by_class_name()

4) find_element_by_tag_name()

# 通過標(biāo)簽值實(shí)現(xiàn)定位,partial_link用于模糊匹配

5) find_element_by_link_text()

6) find_element_by_partial_link_text()

# 元素的路徑定位選擇器

7) find_element_by_xpath()

8) find_element_by_cass_selector()

我們將8種定位方式分為4組,分組標(biāo)準(zhǔn)是以每種定位方式的優(yōu)缺點(diǎn)來進(jìn)行劃分。具體的說明如下:

(1)find_element_by_id和find_element_by_name分別通過元素屬性id和name的屬性值來定位。如果被定位的元素不存在屬性id或name,則無法使用這種定位方式。通常情況下,一個(gè)網(wǎng)頁中,元素的id或name的屬性值是唯一的,如果多個(gè)元素的id或name相同,這種定位方式只能定位第一個(gè)元素。

(2)find_element_by_class_name和find_element_by_tag_name分別通過元素屬性class和元素標(biāo)簽類型進(jìn)行定位。在一個(gè)網(wǎng)頁里,屬性class的屬性值可以被多個(gè)元素使用,同一個(gè)元素標(biāo)簽也可以多次使用,正因如此,這兩種定位方式只能定位符合條件的第一個(gè)元素。

(3)find_element_by_link_text和find_element_by_partial_link_text是根據(jù)標(biāo)簽值進(jìn)行定位。比如單擊豆瓣電影網(wǎng)的排行榜,通過網(wǎng)頁的文字來對(duì)元素進(jìn)行定位。若網(wǎng)頁中的文字并不是唯一,那么Selenium也是默認(rèn)定位第一個(gè)符合條件的元素。

(4)find_element_by_xpath和find_element_by_css_selector是由xpath和css_selector實(shí)現(xiàn)定位,兩者是一個(gè)定位選擇器,通過標(biāo)簽的路徑來實(shí)現(xiàn)定位。標(biāo)簽的路徑是指當(dāng)前標(biāo)簽在整個(gè)HTML代碼里的代碼位置,比如里的第二個(gè)標(biāo)簽,又嵌套標(biāo)簽,那么的路徑為body ->div[1] ->p。這種定位方式相對(duì)前面的定位較為精準(zhǔn),因?yàn)槊總€(gè)標(biāo)簽的路徑都是唯一的。

關(guān)鍵詞: Python實(shí)現(xiàn)網(wǎng)頁自動(dòng)化-Selenium定位元素方法(三) pytho

 

網(wǎng)站介紹  |  版權(quán)說明  |  聯(lián)系我們  |  網(wǎng)站地圖 

星際派備案號(hào):京ICP備2022016840號(hào)-16 營(yíng)業(yè)執(zhí)照公示信息版權(quán)所有 郵箱聯(lián)系:920 891 263@qq.com