web自动化03-xpath定位


 

   目标: 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 开头的元素