1. 程式人生 > 實用技巧 >《Python+selenium》自動化八大元素定位方法

《Python+selenium》自動化八大元素定位方法

注:尋找元素必須找到這個元素的唯一定位,否則達不到預期效果,一般來說最有效的為xpath、css定位,ID屬性有時候會出現動態ID不好定位,class、name元素屬性會出現多個相同的值定位不準確

素材地址百度網站:www.baidu.com

本文使用到的方法:
send_keys(value):輸入方法,將value代替為你想輸入的值

click():點選方法,可對定位到的元素進行點選事件

定位之前程式碼:

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()

driver.implicitly_wait(10)

driver.get(‘www.baidu.com’)

No.1:元素ID定位

函式:find_element_by_id(self,value)
示例:定位百度的輸入框,方法:滑鼠懸浮在輸入框上,右擊點選檢查

定位到該元素並輸入文字:driver.find_element_by_id(‘kw’).sned_keys(‘python自動化’)

No.2:元素name定位

還是百度的輸入框:

driver.find_element_by_name(‘wd’).send_keys(‘python自動化’)

No.3:元素class定位:

依然為百度輸入框:

driver.find_element_by_class_name(‘s_ipt’).send_keys(‘python自動化’)

No.4:元素Tag定位:

百度輸入框為input標籤,所以寫法為:
driver.find_element_by_tag_name(‘input’).sned_keys(‘python自動化’)

No.5:元素link_text定位:

定位並點選新聞:
driver.find_element_by_link_text(‘新聞’).click()

No.6:元素Partial Link定位:

link_text與partial_link_text定位的區別:

link_text:需要輸入全部的文字連結內容,“新聞”
partial_link_text:只需要輸入部分文字連結內容,“新”

driver.find_element_by_partial_link_text(‘新’).click()

No.7:元素xpath定位:

xpath是一種通過路徑定位的語言,路徑分為絕對路徑和相對路徑

絕對路徑:國家/城市/區/街道/小區/門牌號
相對路徑:A相對B的位置,以B為起點來找A

還是以百度輸入框為例:

a、絕對路徑獲取元素

driver.find_element_by_xpath(’/html/body/div/div/div[5]/div/div/form/span/input’)
b、通過索引來獲取元素,匹配span標籤下的input標籤

driver.find_element_by_xpath(’//span/input’)
c、獲取百度文字連結中更多按鈕

注:last()函式獲取都是指定元素最後的索引號
last()-1:表示倒數第二個元素

driver.find_element_by_xpath(’//div[last()]/a’)
d、通過元素屬性值進行定位新聞

driver.find_element_by_xpath(’//a[@href=‘http://news.baidu.com’]’)

driver.find_element_by_xpath(’//div[@id=‘s-top-left’]/a[@href=‘http://news.baidu.com’]’)
e:模糊匹配(在測試中經常會碰見一些元素屬性是動態生成的,每次訪問的屬性值都會不一樣,這類元素定位難度極大,假如該類元素中有一部分元素內容保持不變則可以使用模糊匹配)
starts-with(str1,str2):查詢屬性str1的屬性值為str2關鍵字開始的頁面元素
driver.find_element_find_by_xpath(’//a[starts-with(@href,‘http://news’)]’)
含即可無需考慮位置
driver.find_element_by_xpath(’//a[contains(@href,‘http://news’)]’)
f:通過text()函式獲取元素文字並定位元素

driver.find_element_by_xpath(’//a[contains(text(),‘新聞’)]’)
driver.find_element_by_xpath(’//a[contains(.,‘新聞’)]’)

定位新聞的上一級

driver.find_element_by_xpath(’//a[contains(.,‘地圖’)]/…’)

谷歌便捷獲取xpath

將滑鼠放在元素屬性上,然後移動到copy,再點選copy xpath即可獲取谷歌提供的xpath定位,當谷歌提供的定位在程式碼實際執行中不準確時,需要自己手動編寫xpath定位

No.8:元素CSS定位:

定位百度一下按鈕:
driver.find_element_by_css_selector(’#su’)

css定位可以在元素上右擊,然後copy–>copy selector

By方法定位:

Find_element(By.ID,“value”)

Find_element(By.NAME,“value”)
Find_element(By.CLASS_NAME,“value”)
Find_element(By.TAG_NAME,“value”)
Find_element(By.LINK_TEXT,“link text”)
Find_element(By.PARTIAL_LINK_TEXT,“partial link text”)
Find_element(By.XPATH,“xpath”)
Find_element(By.CSS_SELECTOR,“selector”)

在這裡插入圖片描述掃描二維碼
獲取更多精彩