網(wǎng)頁(yè)自動(dòng)化最基本的要求就是要定位到各個(gè)元素掉蔬,然后才能對(duì)該元素進(jìn)行各種操作(輸入廊宪,點(diǎn)擊,清除女轿,提交等)箭启,以下是整理的常用的定位元素的方法
一,單數(shù)定位方法(遇到復(fù)數(shù)蛉迹,默認(rèn)取第一個(gè))
1傅寡,通過(guò)id定位元素
如果id不是動(dòng)態(tài)的,一個(gè)頁(yè)面的id是唯一的北救。最簡(jiǎn)單的定位方式荐操。
注意:有些id值是動(dòng)態(tài)變化的,則不能使用該方法定位扭倾。
drive.find_element_by_id('id_value')
2淀零,通過(guò)class_name 定位元素
注意:當(dāng) class 是由多個(gè)空格隔開(kāi)組成,取其中一個(gè)即可膛壹。
drive.find_element_by_class_name('class_name_value')
3, 通過(guò)name 定位元素
drive.find_element_by_name()
4唉堪,通過(guò)tag_name 定位元素
標(biāo)簽名字最容易重復(fù)模聋,不過(guò),當(dāng)定位一組數(shù)據(jù)時(shí)唠亚,可使用链方。
drive.find_element_by_tag_name()
5,xpath 定位:
獲取絕對(duì)路徑的方法:1灶搜,按F12打開(kāi)控制臺(tái)祟蚀;2工窍,Ctrl+Shift+C,點(diǎn)擊要定位的元素;3前酿,在代碼區(qū)域右擊患雏,選擇Copy-CopyXpath
drive.find_element_by_xpath( )
6,css_selector 定位(本人業(yè)務(wù)場(chǎng)景中使用最多的方法):
定位id罢维,屬性前面加" # "淹仑,定位class,屬性前面加“ . ”,層級(jí)之間可以用拆分符隔開(kāi)肺孵,比如 > +
drive.find_element_by_css_selector('#kk-tools-dialog > li >span')
7匀借,通過(guò)link文字精確定位元素
如:<a onclick="return false;" class="lb" name="tj_login" >登錄</a>
drive.find_element_by_link_text("登錄")
8,通過(guò)link文字模糊定位元素
find_element_by_partial_link_text("登")
二平窘,復(fù)數(shù)定位
復(fù)數(shù)定位和單數(shù)定位方法一樣吓肋,不同的是,find_element需要后面需要加 S 瑰艘,即find_elements蓬坡。當(dāng)有多個(gè)相同的屬性時(shí),可以通過(guò)取下標(biāo)來(lái)定位磅叛。如果不帶下標(biāo)屑咳,則返回的是一個(gè)list
drive.find_elements_by_css_selector('#kk-tools-dialog > li >span')[2]
drive.find_elements_by_class_name() #返回一個(gè)list
drive.find_elements_by_tag_name()
三,如何判斷元素是否定位成功以及確定唯一性
打開(kāi)控制臺(tái)的Console頁(yè)面弊琴,輸入document.querySelectorAll(‘’)兆龙,里面輸入需要查找的屬性,方法同css_selector敲董。列如:
document.querySelectorAll('#kk-tools-dialog >ul >li >span')
查找結(jié)果如下圖紫皇,可以看出屬性定位到12個(gè)元素,鼠標(biāo)放在元素上可以查看元素對(duì)應(yīng)的內(nèi)容腋寨。需要使用哪個(gè)帶上下標(biāo)即可