Xpath常用的定位策略:
1. 路径
1). 绝对路径:
语法:以单斜杠开头逐级开始编写,不能跳级。如:/html/body/div/p[1]/input
2). 相对路径
语法:以双斜杠开头,双斜杠后边跟元素名称,不知元素名称可以使用*代替。
如: //input
//*
2. 路径结合属性
语法:在Xpath中,所有的属性必须使用@符号修饰 如://*[@id='id值']
3. 路径结合逻辑(多个属性)
语法://*[@id="id值" and @属性='属性值']
4. 路径结合层级
语法://*[@id='父级id属性值']/input
提示:
1. 一般见识使用指定标签名称,不使用*代替,效率比较慢。
2. 无论是绝对路径和相对路径,/后面必须为元素的名称或者*
3. 扩展:在工作中,如果能使用相对路径绝对不使用绝对路径。
2.5 Xpath扩展
1. //*[text()='XXX'] # 定位文本值等于XXX的元素
提示:一般适合 p标签,a标签
2. //*[contains(@属性,'xxx')] # 定位属性包含xxx的元素
提示:contains为关键字,不可更改。
3. //*[starts-with(@属性,'xxx')] # 定位属性以xxx开头的元素
提示:starts-with为关键字不可更改
CSS定位
方法:
driver.find_element_by_css_selector()
常用测试略:
1. id 选择器
前提:元素是必须有id属性
语法:#id 如:#passwordA
2. class 选择器
前提:元素是必须有class属性
语法:.class 如:.telA
3. 元素选择器
语法:element 如:input
4. 属性选择器
语法:[属性名=属性值]
5. 层级选择器
语法:
1. p>input
2. p input
提示:>与空格的区别,大于号必须为子元素,空格则不用。
扩展:
1. [属性^='开头的字母'] # 获取指定属性以指定字母开头的元素
2. [属性$='结束的字母'] # 获取指定属性以指定字母结束的元素
3. [属性*='包含的字母'] # 获取指定属性包含指定字母的元素
复制xpath:/html/body/form/div/fieldset/p[1]/input
复制最简://*[@id="userA"]
复制CSS路径:html body form div#zc fieldset p#p1 input#userA
提示:
1. 虽然借助工具可以快速生成xpath路径和css语法,但是前期不建议使用。
2. 工具在智能,没有人智能。



