python3+selenium入門04-元素定位


我們在對瀏覽界面做操作時,比如點擊按鈕,搜索框輸入內容。都需要把鼠標挪過去,然后再點擊,或者輸入內容。在selenium操作時也是一樣的。需要先對元素進行定位,然后才能進行操作。可以借助瀏覽器的開發者工具(瀏覽器F12打開)來查看網頁對應的html代碼。然后進行定位。可以稍微學習HTML基礎,更容易理解。

定位方式有八種,這八種各有兩個方法,一個是find_element_by_方式,這是定位單個元素的。一個是find_elements_by_方式,這是用來定位多個元素的。

 

使用name屬性定位

打開谷歌瀏覽器,打開百度首頁,F12呼出開發者工具

使用左邊這個按鈕,點擊百度搜索框,會自動顯示對應HTML代碼,可以看到name=‘wd’

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_name('wd')#通過name屬性定位輸入框
test.send_keys('測試一下')#輸入測試一下

 

 

使用id屬性定位

還是以上面百度搜索框為例,id=‘kw’

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_id('kw')#通過id屬性定位輸入框
test.send_keys('測試一下')#輸入測試一下

通過id和name是比較常用和容易的定位方式。因為一般id和name元素在一個HTML文件中基本是唯一的。不過有時候前端開發也可能不寫這兩個屬性。

 

 

使用class定位

還是使用百度搜索框,class='s_ipt'

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_class_name('s_ipt')#通過classname屬性定位輸入框
test.send_keys('測試一下')#輸入測試一下

 

 

使用tagname定位

tagname其實就是HTML的標簽。不過一個HTML文件里面相同的標簽肯定很多,一般很少用到。基本都是定位父元素,然后父元素定位下面所有tagname元素。再根絕其他條件去操作。比如表格啥的。

 

 

使用link_text定位

這是用來定位文字超鏈接的,可以通過文字鏈接部分的文字描述,定位百度首頁上的新聞按鈕

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_link_text('新聞')#通過link_text定位新聞跳轉按鈕
test.click()#點擊按鈕

 

 

使用partial_link_text定位

這個也是用來定位文字超鏈接的,和link_text區別在於,這個相當於模糊搜索,只輸入部分文字描述就可以了

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_partial_link_text('')#通過partial_link_text定位新聞跳轉按鈕
test.click()#點擊按鈕

 

 

使用xpath定位

這個百分百可以定位到,通過層級來的,感興趣可以學習下xpath的語法,不會也沒關系。還是以百度搜索框為例

對着直接右鍵copy-copy xpath

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_xpath('//*[@id="kw"]')#通過xpath定位搜索框
test.send_keys('測試一下')#輸入測試一下

 

 

 

使用css定位

和xpath一樣,拷貝的時候選上面的copy-selector就行

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome瀏覽器實例
dr.maximize_window()#瀏覽器最大化
dr.get('https://www.baidu.com')#打開百度首頁
test = dr.find_element_by_css_selector('#kw')#通過xpath定位搜索框
test.send_keys('測試一下')#輸入測試一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM