1 Xpath常用的定位策略
driver.find_element_by_XPath(“XPath”)
-
路径
1)绝对路径:
语法:以单斜杠开头,逐级编写
如:/html/body/form/div/fieldset/p[2]/input (标签相同时,用【n】表示第n个标签)
2)相对路径:
语法:以双斜杠开头,双斜杠后面跟标签名称,也可以用*代替,即不指定标签(此方式不建议使用)
如://input -
路径结合属性
语法:在XPath中,所有的属性必现使用@符号修饰
如://标签名[@属性=“属性值”] -
路径结合逻辑(多个属性)
语法://标签名[@属性1=“属性值” and @属性2=‘属性值’] -
路径结合层级
语法://父级标签名[@父级属性=“属性值”]/子级标签名
XPath - 延申:
- //*[test()=“xxxx”] 文本内容为xxx的元素
- //*[contains(@attribute,“xxx”)] 属性中含有xxx的元素
- //*[starts-with(@attribute,“xxx”)] 属性以xxx开头的元素
- //*[end-with(@attribute,“xxx”)] 属性以xxx结尾的元素
2 CSS定位常用的定位策略
driver.find_element_by_css_selector(“css_selector”)
- id选择器
语法:#id - class选择器
语法:.class - 元素选择器
语法:元素标签名 - 属性选择器
语法:[属性=”属性值“] - 层级选择器
语法:
1)标签1>标签2 (>:2必须是1的直接下级)
2)标签1 标签2 (空格:2只要是1的下级即可)
CSS延申:
- 标签名A[属性^ = “xxx”] 标签A中属性值以xxx开头的元素
- 标签名A[属性$ = “xxx”] 标签A中属性值以xxx结尾的元素
- 标签名A[属性* = “xxx”] 标签A中属性值包含xxx的元素