Python+Selenium之元素定位XPATH
2018-01-22 本文已影响75人
路由心定
XPATH简介:
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准
参考网站:W3school
selenium之xpath源码
def find_element_by_xpath(self, xpath):
"""
Finds an element by xpath.
:Args:
- xpath - The xpath locator of the element to find.
:Usage:
driver.find_element_by_xpath('//div/td[1]')
"""
return self.find_element(by=By.XPATH, value=xpath)
xpath各种实际用法
-
XPATH工具安装
- 打开火狐浏览器
- 点击右上角,菜单-附件组件-扩展
- 在搜索所有附件组件文本输入框输入:firebug
- 找到Firebug,点击安装。
- 安装好了之后,会在火狐浏览器右上角显示一个虫子的图标
firebug小虫子
6.只针对IE的可以使用Fire-IEBrowser1.4.xlsm
工具,下载地址:Fire-IEBrowser1.4.xlsm,密码:73yn
-
text()定位方法(以百度首页新闻为例,元素属性唯一的情况下可以使用)
图片10.png
其对应的XPATH路径
://div[@id='u1']//a[.='新闻']
怎么来的:
首先查找div标签下并且id=u1的div标签然后再查找text()=新闻的元素可以以点代替,不指明属性 -
contains()方法
以上边路径为例://div[@id='u1']//a[@href,'news'] -
相对路径(有时候,我们遇到目标元素节点的信息很少,不足够用来精确定位到目标元素,这个时候,我们就需要考虑,利用目标元素上下附件节点,通过确定附件的节点从而确定目标元素,这种方式就叫相对路径)
另外附上关于xpath的路径写法详解(来源网络)
/AAA:选择根元素AAA
//BBB:所有BBB元素
/AAA/CCC/DDD/*:选择/AAA/CCC/DDD/下所有元素
/*/*/*/BBB:选择有3个祖先元素的BBB元素
//*:选择所有元素
/AAA/BBB[1]:选择AAA的第一个BBB子元素
//@ID:选择所有的ID属性;//BBB[@ID]:选择有ID属性的BBB元素;//BBB[@*]:选择有任意属性的BBB元素;//BBB[not (@*)]:选择没有属性的BBB元素
//BBB[normalize-space(@name)=’bbb’] :选择含有name且值(用mormalize-space去掉前后空格)为‘bbb’的BBB元素
//*[count(BBB)=2]:选择含有2个BBB子元素的元素;//*[count(*)=2];
欢迎关注我们的微信公众平台:我要学测试