selenium獲取元素定位的方法總結(動態(tài)獲取元素)
元素
要想操作一個元素,首先應該識別這個元素。人有各種的特征(屬性),可以通過其特征找到人,如通過身份證號、姓名、家庭住址。同理,界面的某個元素會有各種的特征(屬性),可以通過這個屬性找到這對象。
例如:
driver.find_element(By.CSS_SELECTOR, 'img[title="點擊圖片重新獲取驗證碼"]')
該代碼尋找屬性標識著為 “點擊圖片重新獲取驗證碼圖” 的圖片驗證碼。
元素:由標簽頭 + 標簽尾 + 標簽頭和標簽尾包括的文本內容
元素定位最終就是通過元素的信息或者元素的層級結構來進行元素定位
查看元素信息
選中元素,右鍵點擊“檢查”,即可查看到該控件的所有屬性
元素定位
selenium提供了常用的8種方法:
定位一個元素
定位多個元素
- 通過元素id定位
find_element_by_id
find_elements_by_id
通過元素name定位
find_element_by_name
find_elements_by_name
通過xpath表達式定位
find_element_by_xpath
find_elements_by_xpath
通過完整超鏈接定位
find_element_by_link_text
find_elements_by_link_text
通過部分鏈接定位
find_element_by_partial_link_text
find_elements_by_partial_link_text
通過標簽定位
find_element_by_tag_name
find_elements_by_tag_name
通過類名進行定位
find_element_by_class_name
find_elements_by_class_name
通過css選擇器進行定位
find_element_by_css_selector
find_elements_by_css_selector
通過元素id定位
find_element_by_id("kw")?
通過元素name定位
find_element_by_id("kw")?
通過xpath表達式定位
Xpath
是一種在XML
和HTML
文檔中查找信息的語言,通過Xpath
路徑來定位元素的時候也是分絕對路徑和相對路徑。
絕對路徑
鼠標單機右鍵-Copy-Copy full XPath即可獲取其XPath絕對路徑
/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input
selenium通過xpath定位語句:
find_element_by_xpath('/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input')
相對路徑
鼠標單機右鍵-Copy-Copy XPath即可獲取其XPath相對路徑
//*[@id="kw"]
selenium通過xpath定位語句:
find_element_by_xpath('//*[@id="kw"]')
相對路徑的xpath定位表達式更加簡潔,但是偶然會出現(xiàn)錯誤的尋址,但如果可以推薦使用相對路徑的xpath表達式。
通過完整超鏈接定位
find_element_by_link_text('文庫')
通過部分鏈接定位
find_element_by_partial_link_text('庫')
通過標簽定位
HTML
是通過tag
來定義一類功能的,比如input
是輸入,table
是表格,tbody
是表格主體等。每個元素其實就是一個tag
,由于一個tag
用來定義一類功能,一個網頁往往有很多同類tag
,所以很難通過tag
去區(qū)分不同的元素。
find_element_by_tag_name('input')?
通過類名進行定位
find_element_by_class_name('s_ipt')
如果class的值中有空格,則需要借助CSS選擇器。
通過css選擇器進行定位
在Selenium
官網當中是更加推薦Css Selector()
方法來進行頁面元素的定位的,Css
定位可以通過id選擇器、class選擇器、標簽選擇器和屬性選擇器。
id選擇器
通過 # 來定義,通過元素的id屬性來定位
find_element_by_css_selector("#kw")?
class選擇器
通過 .來定義,通過元素的class屬性來定位
find_element_by_css_selector(".s_ipt")?
標簽選擇器
通過標簽的名字來定位元素
find_element_by_css_selector("input")?
屬性選擇器
find_element_by_css_selector('[id="kw"]')? find_element_by_css_selector('input[id="kw"]')?
定位帶空格的復合class屬性
以百度上方欄目元素為例,其class屬性帶有空格。
class="s-top-left-new?s-isindex-wrap"
直接通過class屬性定位是會報錯的,需要通過css selector按class屬性定位。
find_element_by_css_selector('[class="s-top-left-new?s-isindex-wrap"]')
selenium 4.0以后版本用法
from?selenium.webdriver.common.by?import?By element?=?web.find_element(By.ID,'kw') element?=?web.find_element(By.NAME,'wd') element?=?web.find_element(By.CLASS_NAME,'s_ipt') element?=?web.find_element(By.TAG_NAME,'input') element?=?web.find_element(By.LINK_TEXT,'新聞') element?=?web.find_element(By.PARTIAL_LINK_TEXT,'聞') element?=?web.find_element(By.XPATH,'//*[@id="kw"]') element?=?web.find_element(By.CSS_SELECTOR,'#kw') element?=?web.find_element(By.CSS_SELECTOR,'[id="kw"]') element?=?web.find_element(By.CSS_SELECTOR,'input[id="kw"]')
以上就是selenium獲取元素定位的8種方法總結(動態(tài)獲取元素)的詳細內容,更多關于selenium元素定位的資料請關注腳本之家其它相關文章!
相關文章
django獲取from表單multiple-select的value和id的方法
今天小編就為大家分享一篇django獲取from表單multiple-select的value和id的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07對變量賦值的理解--Pyton中讓兩個值互換的實現(xiàn)方法
下面小編就為大家分享一篇Pyton中讓兩個值互換的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程)
這篇文章主要介紹了PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Python 實現(xiàn)使用dict 創(chuàng)建二維數據、DataFrame
下面小編就為大家分享一篇Python 實現(xiàn)使用dict 創(chuàng)建二維數據、DataFrame,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04