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