1. 程式人生 > >selenium(python)定位(查詢)元素的方法小結

selenium(python)定位(查詢)元素的方法小結

有多種方法可以在網頁中定位元素。你可以為你的專案選擇最合適的那一個。selenium提供以下方法用於在網頁中定位元素。
如果匹配到多個元素將預設返回第一個。

  • find_element_by_id(屬性)
  • find_element_by_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(類名)
  • find_element_by_css_selector(根據css語法)

查詢(定位)多個元素(以下方法將會返回列表):
使用方法同定位單個元素,不同的是返回匹配的多個元素的列表。

  • 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

除了以上給出的公共方法,還有2個私有方法也許對網頁中的元素定位有用。這兩個方法是find_element 和 find_elements。
舉個栗子:

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"

還可以通過javascript語法來定位,返回型別就是單個HTML元素或者陣列。

webdriver.execute_script("javascript code")

舉個栗子:

from selenium import webdriver
driver = webdriver.Firefox()
driver.execute_script("document.getElementById('username')")