一、如何进行元素定位?
元素定位就是通过元素的信息或元素层级结构来定位元素
二、元素定位方式有哪些?
Selenium提供了八种元素定位方式id
name
class_name(使用元素的class属性定位)
tag_name(标签名 )
link_text(定位超链接a标签)
partial_link_text(定位超链接 a标签 模糊)
xpath(基于元素路径)
css(元素选择器)
方式一:通过元素的id定位
说明:id定位就是通过元素的id属性来定位元素。
id定位方法:element = driver.find_element_by_id(id)
知识点
在前端,一般一个id值是唯一的,只属于一个元素
方式二:通过元素的name定位
说明:name定位就是根据元素的name属性来定位,HTML文档中name的属性值是可以重复的。
name定位方法:element = driver.find_element_by_name(name)
知识点有可能有多个元素共用一个name
但 find_element_by_name 只返回第一个匹配到name的元素
想返回多个的话,需要调用 find_elements_by_name 方法
方式三:通过元素的class定位
说明:class_name定位就是根据元素class属性值来定位元素。
class_name定位方法:element = driver.find_element_by_class_name(class_name)
知识点在前端,一般多个元素共用一个class
find_element_by_class_name 只返回第一个匹配到class的元素
坏处:当找不到元素则报错
方式四:tag_name定位
说明:tag_name定位就是通过标签名来定位
tag_name定位方法:element = driver.find_element_by_tag_name(tag_name)
# 如果存在多个相同标签,则返回符合条件的第一个标签
知识点多个元素同种HTML标签见怪不怪了
同样的, find_element_by_tag_name 返回第一个匹配到标签的元素
find_elements_by_tag_name 可以返回所有匹配到标签的元素
方式五:link_text定位
说明:link_text定位是专门用来定位超链接元素( 标签< /a>),并且是通过超链接的文本内容来定位元素
link_text定位方法element = driver.find_element_by_link_text(link_text)
# link_text:为超链接的全部文本内容
知识点find_element_by_link_text 是精确匹配,需要文本完全相同才能匹配
若需要返回全部匹配到的元素,也需要用 find_elements_by_link_text
方式六:partial_link_text定位
说明:partial_link_text可以使用局部来匹配元素,也可以使用全部文本内容匹配元素
partial_link_text定位方法:element=driver.find_element_by_partial_link_text(partial_link_text)
# partial_link_text:可以传入a标签局部文本-能表达唯一性
知识点find_element_by_partial_link_text 支持模糊匹配,包含文本则匹配成功
若需要返回全部匹配到的元素,需要find_elements_by_partial_link_text
方式七:通过xpath定位
说明:基于元素的路径
xpath 定位方法:element = driver.find_element_by_xpath(xpath)
方式八:通过css选择器定位
说明:css定位就是通过css选择器工具进行定位
css 定位方法:element = driver.find_element_by_css_selector(css_selector)