XPath即XML路径语言,支持从xml或html中查找元素节点,使用XPath完全可以替代其他定位放式,如:
- find_element_by_xpath('//*[@id=""]')等同于find_element_by_id("")
- find_element_by_xpath('//*[@name=""]')等同于find_element_by_name("")
- find_element_by_xpath('//*[@class=""]')等同于find_element_by_class_name("")
- find_element_by_xpath('//标签名')等同于find_element_by_tag_name("标签名")
- find_element_by_xpath('//a[contains(text(),"")]')等同于find_element_by_link_text("")
- find_element_by_xpath('//*[@id=""]')等同于find_element_by_partial_link_text("")
需要通过一组元素或分层定位的也可以直接使用XPath直接定位到
从浏览器复制出的XPath有可能不靠谱,所以我们要学会XPath的语法
路径#
- /绝对路径: /html/body/div
- //相对路径: //div/form //*/form 路径中可以使用 *代表任意标签
- .当前路径: //div/form/. 等同于//div/form
- ..上级路径: //div/form/.. 等同于//div
索引#
- 从1开始: /html/body/div[2] //div[1]/form
属性#
- @属性名:定位包含特定属性名的标签, 如//input[@class]
- @属性名="属性值":定位特定属性名=属性值的标签,如//input[@id="kw"]
- @*="属性值":定位任意属性名=属性值的标签, 如 //input[@*='kw']
- 多属性结合定位://input[@id="kw" and @class='kw-class']或//input[@id="kw"][@class="kw-class"] (and处也支持使用or,表示或)
函数#
- text():标签中的文本值,如//a[text()="百度首页走起~"]
- contains(): 包含,如//a[contains(text(), "百度首页")]
- starts-with(): 以**开头,如//a[starts-with(text(), "百度"]
- last(): 最后一个, 如//div[last()]
轴#
- parent: 父标签
- child:子标签
- following: 后面的,如://*[text()="用户名"]/following::input[1] # 紧邻文本为用户名的输入框
- preceding:前面的
本文介绍了如何在Selenium中使用XPath进行网页元素定位,包括XPath与Selenium定位方法的对应关系,如通过id、name、class、标签名、链接文本等定位。还讨论了XPath的语法,如绝对路径、相对路径、索引、属性、函数以及轴的使用,强调了正确构造XPath的重要性,并提供了多种定位技巧。

2526

被折叠的 条评论
为什么被折叠?



