python selenium之Xpath定位

  属性描述

  XPath 语法支持节点描述,节点描述为一个逻辑真假表达式,任何真假判断表达式都可在节点后方括号里表示,这条件必须在XPath处理这个节点前先被满足。在某一步骤可有多少个描述并没有限制。

  对于页面元素, 可用XPath 表示为HTML标签的属性值来定位,以百度首页为例,查看如下几个XPath的表示法:

XPath1: //*[@id="su"]
XPath2: //input[@value="百度一下"]
XPath3: //input[@class="bg s_btn"]

       XPath123 实际上表示的均为百度一下这个按钮元素,只是选取的属性值的不同而已。XPath1表示找id”su”的元素;XPath2表示找value百度一下input标签元素;而XPath3则表示找class即样式名为”bg s_btn”input标签元素。
 

  这就解释了开头我所说的XPath同取idCSSName等方式的做法,即可理解为取HTML标签的属性罢了,而且该方式更具灵活性,可做多种及多层的匹配,如单取CSS”test”,则会取出所有CSS”test”的元素,而若写成XPath方式,如 //input[@class="test"] ,则取出的是CSS”test”且仅为input的元素;若可知上层id,如 //div[@id="test"]//*[@class="test"] ,则定位的是id”test”div下所有class”test”的元素。甚至有更灵活的模糊匹配方式,如若XPath//a[contains(text(),'')] ,表示为所有包含这一文字的a元素,如新闻”a标签就会被定位出。

  备注:1.开头是两个斜线(//)代表相对路径;2.使用了通配符 * 表示匹配任意

  有时要定位多个元素,即需选取一组满足要求的元素组,XPath使用上也是相当方便的,示例如下:

 XPath4: //a[@class="mnav"]
 XPath5: //a[@class="mnav"][2]

层级定位

  

猜你喜欢

转载自www.cnblogs.com/Mr-ZY/p/11696574.html