天天看點

Python Selenium根據條件定位元素

分享知識  傳遞快樂

在一個頁面中有很多不同的政策可以定位一個元素,你可以選擇最合适的方法去查找元素。

定位單個元素

  • 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')