分享知識 傳遞快樂
在一個頁面中有很多不同的政策可以定位一個元素,你可以選擇最合适的方法去查找元素。
定位單個元素
- find_element_by_id:通過ID定位元素
- find_element_by_name:通過Name定位元素
- find_element_by_xpath:通過XPath定位元素
- find_element_by_link_text:通過連結文本擷取超連結
- find_element_by_partial_link_text:通過連結文本擷取超連結
- find_element_by_tag_name:通過标簽名定位元素
- find_element_by_class_name:通過Class name 定位元素
- find_element_by_css_selector:通過CSS選擇器定位元素
當你指定一個元素時,會在頁面中查找指定的元素,如果比對會被比對并傳回。如果找不到任何元素,會抛出 NoSuchElementException 異常。
定位多個元素
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
以上方法會傳回一個list清單,當查找不到标簽時會傳回一個空清單,進而避免發生異常。
除了上述的公共方法,下面還有兩個私有方法,在你查找也頁面元素的時候也許有用: find_element 和 find_elements 。
示例1:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
下面是 By 類的一些可用屬性:
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
Selenium 常用定位元素操作說明:
第一種方式:
# 根據id來查找某個元素。
driver.find_element_by_id('id')
# 根據類名來查找某個元素。
driver.find_element_by_class_name('className')
# 根據name屬性值查找某個元素。
driver.find_element_by_name('name')
# 根據标簽名來查找某個元素。
driver.find_element_by_tag_name('tagName')
# 根據xpath文法查找某個元素。
driver.find_element_by_xpath('//div')
# 根據css選擇器選取元素。
driver.find_element_by_css_selector('//div')
第二種方式:使用第二種方式需要先導入By類
from selenium.webdriver.common.by import By
# 根據id來查找某個元素
driver.find_element(By.ID, 'id')
# 根據類名來查找某個元素
driver.find_element(By.CLASS_NAME, 'className')
# 根據name屬性值查找某個元素
driver.find_element(By.NAME, 'name')
# 根據标簽名來查找某個元素
driver.find_element(By.TAG_NAME, 'div')
# 根據xpath文法查找某個元素
driver.find_element(By.XPATH, '//div')
# 根據css選擇器選取元素
driver.find_element(By.CSS_SELECTOR, '//div')