這次我們要分享的是對元素的定位,在一個頁面中有很多不同的策略來定位一個元素,我們選擇最合適的方法即可,
一個頁面最基本組成單元是元素,想要定位一個元素,我們需要特定的資訊來說明這個元素的唯一特征,
selenium 主要提供了8種定位元素方法:
find_element_by_id
find_element_by_name
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
find_element_by_xpath
我們先簡單介紹瀏覽器怎么定位到元素上:
1.打開Chrome瀏覽器,按F12或瀏覽器右上角打開開發者工具,
(注:F12打不開的,看快捷鍵設定,比如Fn+F12打開)

2.打開開發者工具后,在開發者工具列左上角點亮箭頭,然后滑鼠移動到想要定位的頁面元素上,如圖所示:

3.定位之后,就可以看到對應的元素屬性資訊了,

接下來依次介紹前6種定位方法:
1.find_element_by_id 
id就像人的身份證一樣,具有唯一性,當然,同一個頁面發現兩個相同的id也是有可能的,這取決于前端代碼的規范程度,所以,通過id來查找元素相對可靠,
我們以百度頁面的搜索框為例子,先定位到搜索框上,如下圖:id=“kw”

接下來直接寫代碼,定位搜索框,且輸入文本:

(補充:send_keys()表示模擬鍵盤輸入文本)
運行之后,在搜索框輸入了小胖虎,表示定位到了搜索框:

2.find_element_by_name
name定位和id定位類似,name就像人的名字一樣,元素也會有name屬性,
我們還是以百度搜索框為例,定位元素后發現, name="wd",
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
實作代碼如下:

運行后,在百度搜索框輸入小胖虎,定位成功,

3.find_element_by_link_text
link_text通過文本鏈接定位元素,
以百度頁面的右上角的的文本鏈接為例:

定位到“hao123”鏈接上:
<a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a>
我們要取的是a標簽中間的“hao123”,

運行之后,打開百度頁面,然后點擊hao123, 進入hao123頁面,
補充:click()是指點擊定位到元素之后,進行點擊,
4.find_element_by_partial_link_text
partial_link_text方法和link_text類似,只不過是模糊匹配,有時候文本鏈接很長,我們截取文本的一部分進行定位即可,我們還是定位“hao123”鏈接元素:
<a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a>
截取“hao”或“123”進行定位,代碼如下:

運行后,啟動瀏覽器,打開百度頁面,等待2秒鐘,打開hao123頁面,定位成功,
5.find_element_by_tag_name
tag_name 顧名思義就是tag(標簽)屬性,
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off"><a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a>
上面的 input, a都叫標簽,我們可以發現一個頁面相同的標簽很多,接下里我們用tag_name屬性定位百度搜索框:

運行之后,發現報錯了,是因為一個頁面,相同的標簽太多,想要定位到元素,必須具有唯一性,所以不太推薦使用tag name的方法,
6.find_element_by_class_name
class_name 通過類名定位,
百度搜索框為例,其中class="s_ipt",
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
代碼如下:

運行成功后,啟動瀏覽器,打開百度頁面,搜索框輸入小胖虎,定位成功!

總結:今天介紹的6種定位方法,id定位是最高效也是首選的方法,沒有id屬性的話,再選擇其他定位方法,
下一篇我們將介紹第7種定位方法——xpath定位,功能強大,你值得擁有,

感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且經典的練手專案及原始碼)
④ Python基礎入門、爬蟲、web開發、大資料分析方面的視頻(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
在我的QQ技術交流群里(技術交流和資源共享,廣告進來腿給你打斷)
可以自助拿走,群號953306497(備注“csdn111”)群里的免費資料都是筆者十多年測驗生涯的精華,還有同行大神一起交流技術哦,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289506.html
標籤:其他
