WebDriver 中的 find_element() 方法用來查找元素,並返回 WebElement 對象。是 WebDriver 中最常用的方法。
前面提到的八種定位方式都有對應的方法,如find_element_by_id()
。
在 WebDriver 中還有一種用法,就是單純的find_element()
。需要通過參數傳入定位方式和定位語句。
from selenium.webdriver.common.by import By driver.find_element(By.ID, "kw") driver.find_elements(By.TAG_NAME, "input")
這種方法要借助 By 來傳入定位方式,需要先引入,主要是為了防止定位方式寫錯。
使用find_element()
的好處是方法名不會寫死,定位方式可以通過參數傳遞,在一些框架中使用時會更加靈活一些。
以下是定位方式與 By 中的屬性對應清單:
定位方式 | By |
---|---|
id | By.ID |
name | By.NAME |
class_name | By.CLASS_NAME |
tag_name | By.TAG_NAME |
link_text | By.LINK_TEXT |
partial_link_text | By.PARTIAL_LINK_TEXT |
css_selector | By.CSS_SELECTOR |
xpath | By.XPATH |
find_element 與 find_elements
每種 find_element()
方法,包括find_element_by_id()
在查找元素時,如果定位語句不唯一,能夠查到多個函數的話,默認值返回頁面中出現的第一個。也就是說定位不唯一,那得到的元素可能就不是你想要的。
以下是返回的元素對象結果:
<selenium.webdriver.remote.webelement.WebElement (session="8b1282534fe7b0f87743984601b27047", element="2a08389e-3c5f-4c14-be8d-1046f4a53b76")>
通過 find_elements()
或者find_elements_by_id()
(注意都多了個 s),將以列表的形式返回所有符合條件的元素。
鏈接:https://www.jianshu.com/p/3daceb968b92