web自动化03-xpath定位

2023-10-17 09:29:34 浏览数 (1)

   目标: Xpath方法

1、定位一组元素的方法

element = driver.find_elements_by_*("*")      * 可以是name,tag_name,

注意:元素定位方法如果带有s,则执行结果返回的是列表类型数据,里边的数据是多个元素对象

可以通过列表的下标(索引)获取对应的目标对象元素,再执行操作

   依据:

  • 没有s和带有s的定位方法的相互依据:
  •     1.如果调用元素定位方法后,再点语法,提示的均为列表方法,则方法带s 
  •     2.如果调完元素定位方法后,在点语法,提示的均为元素方法,则方法不带s

2、元素定位—XPath方法

XPath是XML Path的简称,是一门在XML文档中查找元素信息的语言

XML:一种标记语言,用于数据的存储的传递

XPath定位策略

注意:使用XPath策略,需要在浏览器工具中根据策略语法,验证成功后再放入代码中使用

1、路径-定位

2、利用元素属性-定位

3、属性与逻辑-定位

4、层级与属性结合

无论使用哪一种XPath策略,定位方法都是同一个,不同策略只决定方法的参数的写法

   方法:find_element_by_xpath("XPath策略")                

路径预习:

绝对路径:最外层元素到指定元素之间所有经过元素层级的路径

 以/html,使用/来分割元素层级

对页面结构要求比较严格,不建议使用

相对路径:匹配任意层级的元素,不限制元素的位置

1、相对路径以//开始

2、格式 //input  或者 // *

使用开发者工具XPath快速定位元素:

1、目标元素上鼠标邮件——检查

2、元素对应代码上鼠标邮件——copy

3、copy XPath     copy full  XPath

注意:使用相对路径时,要注意方法参数的内外引号嵌套问题

xpath 利用元素属性-定位

说明:通过元素的属性信息来定位元素

语法1: //标签名[@属性名 = "属性值"]            //input[@id = "username"]   

语法2: //*[@属性名= "属性值"]                     //*[@id = "username"]

注意事项:1、目标元素的有些属性和属性值,可能存在多个相同特征的元素,需要注意唯一性

                  2、与class_name 方法不同的是,如果使用具有多个值的class属性,则需要传入全部的属性值

xpath 利用属性与逻辑结合

说明:解决元素之间个相同属性重名问题

格式://*[@属性1= '属性值1' and @属性2 = '属性值2']                          //*[@name = 'tel' and @class = 'tel']

xpath 利用层级与属性结合

如果通过元素自身的信息不方便直接定位到该元素,则可以先定位到父元素,然后再找到该元素

格式 : 父层级定位策略 / 目标元素定位策略

XPath延伸:

    //*[text()  = ""]                  通过文本信息来定位元素(要求全部文本内容)

    //*[contains(@attribute,"xxx")]       属性中含有xxx 的元素

    //*[starts-with(@atttibut,"xxx")]        属性以xxx 开头的元素

0 人点赞