selenium之元素定位
selenium自动化实战之元素定位
元素定位的方法:(6+2)
6: 6种常用的操作方法(id(唯一),class name,name,tag name,link,partial link)
2: 2种通用万能的操作方法(xpath定位,css定位)8大元素定位的详解
- id定位:页面元素属性名id的值(id 是唯一的),但不是所有的元素都有id,有id属性值的元素,id定位是首选的元素定位方式
定位代码:driver.find_element_by_id('id属性的值') 返回的是WebElement对象,可以调用属性和方法 - name定位:元素的name属性,但name不是唯一的,name的属性值可以相同
定位代码:driver.find_element_by_name('name属性的值') 找一单一元素,从上往下,符合条件的第一个值 driver.find_elements_by_name('name属性的值') 找所有匹配的元素,返回的是列表,每一个单一的元素可以调用属性与方法 - class name定位:元素class属性,主要是用class对元素进行分组,对元素设置相同的属性
定位代码:driver.find_element_by_class_name('class属性的值') (当class属性有多个值的时候,要分开写,不能把所有的属性值以空格分开写在一起) - tag name定位:元素的标签名(<标签名 属性名=’属性值’>文本类容</标签名>)
定位代码:driver.find_element_by_tag_name('标签名称') - link定位:链接文本内容全匹配
定位代码:driver.find_element_by_link_text(a元素的文本内容) - partial liink定位:链接文本内容部分匹配(包含的意思)
定位代码:driver.find_element_by_partial_link_text(a元素的部分文本内容) xpath定位: 针对元素的单一特性进行定位的方法,包含绝对定位与相对定位
定位代码:driver.find_element_by_xpath('xpath表达式') ctrl+F 在浏览器中 检查xpath路径是否正确html元素:最顶层的祖先
head和body:为兄弟关系,同一水平位置
body之下所有元素: 按照层级 子代关系
xpath基本定位语法:

- 绝对定位: 严格按照路径与位置来定位,以/开头(该定位方法不可取,页面元素一旦发生改变,路径必须重写,而且检索慢)
相对定位: 不考虑位置与路径,灵活性高,以//开头。(考虑页面是否存在符合表达式的元素即可)包含很多种方法
- 组合标签+属性定位: //标签名[@属性名=’属性值’] //标签名[@属性名=’属性值’ and @属性名=’属性值’] 可以加逻辑运算:and / or
- 组合元素定位: //条件一//条件二 (后一个条件是在前一个条件得到的结果之后再去搜索的) //标签名[@属性名=’属性值’]//标签名[@属性名=’属性值’]
文本内容匹配: 函数 text() 文本全部匹配:text()=文本内容 ;
文本部分匹配:contains(text(),部分文本内容)//标签名[text()='元素的文本内容'] //标签名[contains(text(),'元素的文本内容')] //标签名[contains(@属性,'部分属性值')]轴定位表达式: 轴运算名称 全部以/ (表达式/轴定位名称::标签名[@属性名=’属性值’])
- ancestor: 祖先(根节点)
- parent : 父节点
- preceding:当前元素节点标签之前的所有的节点(html页面先后顺序)
- preceding-sibling:当前元素节点标签之前的所有的兄弟节点(同级)-》哥哥姐姐
- following:当前元素节点标签之后的所有的节点 (html页面先后顺序)
- following-sibling:当前元素节点标签之后的所有的兄弟节点(同级)-》弟弟妹妹
- 使用语法:轴名称::节点名称
parent 是前一个表达式的父亲 parent::标签名(标签名是该节点(父亲)的标签的名称)//标签名[@属性名='属性值']/parent::标签名::节点名称/preceding-sibling::标签名//标签名[@属性名='属性值']
css定位:
定位代码:driver.find_element_by_css_selector(css表达式)
css基本定位语法:


- id定位:页面元素属性名id的值(id 是唯一的),但不是所有的元素都有id,有id属性值的元素,id定位是首选的元素定位方式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱茗辰!