元素選擇策略
在 WebDriver 中有 8 種不同的內置元素定位策略:
class name |
class 名稱 find_element_by_name find_elements_by_name |
定位類的名稱中包含搜索值的元素(不允許使用複合類名) | |
css selector |
css 選擇器 find_element_by_css_selector find_elements_by_css_selector |
定位與 CSS 選擇器匹配的元素 | |
id |
定位 id 屬性與搜索值匹配的元素 find_element_by_id find_elements_by_id |
定位 id 屬性與搜索值匹配的元素 | |
name |
定位 name 屬性與搜索值匹配的元素(很少用) find_elements_by_tag_name |
定位 name 屬性與搜索值匹配的元素 | |
link text | 鏈接文本 | 定位其可視文本與搜索值匹配的錨元素 | |
partial link text | 部分鏈接文本 | 定位其可視文本與搜索值匹配的錨元素 | |
tag name | 標籤名稱 | 定位標籤名稱與搜索值匹配的元素 | |
xpath | xpath | 定位與 XPath 表達式匹配的元素 |
- find_element_by_name 查找name值所在web元素 和 find_elements_by_name查找name值所在所有web元素
- find_element_by_id 查找id標籤的web頁面元素 和 find_elements_by_id 查找id標籤的所有的web頁面元素
# 查找頁面中id="u"的所有元素
ids = driver.find_elements_by_id("u")
for id in ids:
print(type(id))
- find_element_by_css_selector 和 find_elements_by_css_selector
find_element_by_css_selector:首先在 DOM 中搜索 id 爲“form”的元素,然後在較小範圍的上下文中搜索“su”
- find_element_by_tag_name 和 find_elements_by_tag_name
tag定位:頁面html文檔下的各種標籤,find_element_by_tag_name("input");tag往往用來定義一類功能,所以通過tag識別某個元素的概率很低。任意打開一個頁面,都會發現大量的<div>、<input>、<a>等tag,所以tag name定位很少用