元素选择策略
在 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定位很少用