Python2+Selenium入門03-元素定位

元素定位

當我們想讓 Selenium 自動地操作瀏覽器時,就必須告訴 Selenium 如何去定位某個元素或一組元素,每個元素都有着不同的標籤名和屬性值,Selenium 提供了以下8種定位元素的方式,每種方式對應了2個方法:
find_element_by_( ),是用來定位單個元素的,find_elements_by_( ),是用來定位多個元素的。

  • 通過 id 定位
  • 通過 name 定位
  • 通過 class 定位
  • 通過 tag 定位
  • 通過 link 定位
  • 通過 partial link 定位
  • 通過 xpath 定位
  • 通過 css 選擇器定位

下面以百度首頁爲例進行舉例說明:

(一)通過 id 定位

find_element_by_id(id)
find_elements_by_id(id)

# _*_ coding:utf-8 _*_
from selenium import webdriver

driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位id爲“kw”的元素
input_text = driver.find_element_by_id("kw")
input_text.send_keys("selenium")

driver.quit()

(二)通過通過 name 定位

find_element_by_name(name)
find_elements_by_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位name爲“wd”的元素
input_text = driver.find_element_by_name("wd")
input_text.send_keys("selenium")

driver.quit()

(三)通過 class 定位

find_element_by_class_name(name)
find_elements_by_class_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位class名稱爲“s_ipt”的元素
input_text = driver.find_element_by_class_name("s_ipt")
input_text.send_keys("selenium")

driver.quit()

(四)通過 tag 定位

find_element_by_tag_name(name)
find_elements_by_tag_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位標籤爲<input>的元素
input_text = driver.find_elements_by_tag_name("input")
print(len(input_text))

driver.quit()

(五)通過 link 定位

find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位鏈接文本完全匹配“我新聞”的元素
news = driver.find_element_by_link_text("新聞")
news.click()

driver.quit()

(六)通過 partial link 定位

find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位鏈接文本部分匹配“新”的元素
news = driver.find_element_by_partial_link_text("新")
news.click()

driver.quit()

(七)通過 xpath 定位

find_element_by_xpath(xpath)
find_elements_by_xpath(xpath)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# xpath定位,相對路徑與屬性結合定位搜索框
news = driver.find_element_by_xpath("//input[@id='kw']")
news.click()

driver.quit()

(八)通過 css 選擇器定位

find_element_by_css_selector(css_selector)
find_elements_by_css_selector(css_selector)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# css選擇器,id定位密碼輸入框
news = driver.find_element_by_css_selector('#kw')
news.click()

driver.quit()

這裏只是簡單介紹了8種元素定位方式的使用,比較簡單易用的是通過id、name、class定位,我個人比較喜歡的是用xpath定位,當然,最靈活也是最強大的定位方式就是css,它也是比較難掌握的一種方式。關於xpath和css定位方式的詳細介紹,可以參考
selenium 元素定位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章