为什么要使用xpath
当元素没有id name属性,通过class,tagname找到的不是唯一的,而link_text和partial_link_text只能用在a标签
使用xpath可以组合多个条件进行筛选,也可以根据元素之间的层级关系进行查找
绝对路径和相对路径
/绝对路径(不用)
//相对路径
相对路径xpath表达式
//相对路径
*表示任意的标签名称 //input 表示标签是input
[]条件 //input[@id=”kw”] 表示要在input标签里面要有一个id属性 且id属性的值要是kw
Xpath的验证
在页面中按F12后再按ctrl+F
能够查看找到多少个元素,实际当中要找到唯一的一个
实战当中采取怎样的方式去获取xpath
1,通过右击元素的源代码,复制xpath表达式,但是有时候会获取到绝对路径
2,chropath插件
3,编写xpath表达式
编写xpath的方法通过属性
//(相对路径)标签名[@属性名=”属性值”]
通过文本内容
完全匹配//a[text()=””]
包含标签//a[contains(text(),新闻],一般用在a标签,因为文本最前面可能会有空格
多个条件组合 and
如果多个条件组合后还是有相同,就使用索引 xpath索引是以[1]开头
最好加上括号 表示优先级,表示先获取符合的属性,再取索引
元素之间的层级
先编写父级的元素,再编写子级的元素,父子之间可以用/,隔代要用//
通过子级往上找//sub/../..
轴运算/定位
寻找祖先ancestor
寻找同级
选取当前节点之前的所有同级节点 preceding-sibling
选取当前节点之后的所有同级节点 following-sibling
查找元素报错
进行web自动化测试时候,会经常出现以下报错
selenium.common.exceptions.NoSuchElementException: Message: no such element
1,表达式错误
2,没有等待
等待的方法
-强制等待,time.sleep(3)
-隐性等待
在规定时间内不断查找,直到元素被加载
智能等待元素被加载,全局只需要设置一次,但是只能等待元素被加载,数据可能还没被加载完成,就算拿到了元素也不一定会生效
-显性等待
用法相对麻烦,不易理解
智能等待元素被加载,每次使用之前都要使用,用于等待某个元素可以被点击,某个元素可见
可以自己设置某种条件,如果条件满足就返回,如果条件不满足,就会继续执行,知道超时



