美文网首页selenium知识点整理&汇总
Selenium学习005-元素选择之xpath

Selenium学习005-元素选择之xpath

作者: 残阳夕露 | 来源:发表于2018-07-26 23:59 被阅读46次

Selenium学习笔记目录

xpath:树型结构

1. 基本概念
  • 使用方法:find_element_by_xpath("...")

  • 根节点:/

  • 子节点:/html/body/...

    • 直接子节点 /body
    • 所有子节点(包括直接子节点和非直接子节点)//body
  • 当前节点用“.”表示 ./body/...

  • 当前节点的上一层节点用“..”表示 ../body/...

  • 从根节点开始查找/a/b/c/d

  • 不从根节点开始查找(查找所有节点)//c //b/d

  • 通配符用*表示,*可以是任何一种类型//b//* 查找节点b下的所有元素

    • xpath与css方法对比
      xpath css
      //div/* div > *
  • 根据属性查找

    1. 所有属性,包括id和class
    2. 示例01:查找属性含style的所有元素//*[@style]
    3. 示例02:查找p节点下属性spec=len2的元素//p[@spec='len2']
    • xpath与css方法对比

      xpth属性的值必须加引号,css如果没有空格可以不加引号

      xpath css
      //*[@style] *[style]
      //p[@spec='len2'] p[spec=len2]
2. 举例应用
  • 根据id选择//*[@id='food']

  • 选择属于其父元素的第二个p

    • xpath与css方法对比
      xpath css
      //p[2] nth-of-type(2)
  • 选择属于其父元素的倒数第几个元素

    • 最后一个p类型的子元素//p[last()]
    • 倒数第二个p类型的子元素//p[last(-1)]
    • 所有元素的倒数第二个//*[last()]
  • 根据位置选择

    position表示位置

    • 所有元素中的前两个元素 //*[position()<=2]

    • 除了第一个元素外的其他所有元素 //*[position()>1]

    • 所有元素中的最后三个元素 //*[position()>last()-3]

    • xpath与css方法对比

      • xpath:选择所有的p和所有的button(先选择所有的p再选择button)//p | //button
      • css:选择所有的p和所有的button(按结构顺序选择)p,button
  • 当前节点下的所有直接子节点

    • css:food下面所有的直接子节点中的div#food ~ div
    • xpath://*[@id='food']/following-sibling::div
    • id为food的节点的子节点的第一个节点//*[@id='food']/following-sibling::*[1]
    • id是food的上一个节点的div节点//*[@id='food']/preceding-sibling::div
    • id为food的父节点(上层节点)//*[@id='food']/..
  • 当前目录与子目录

    • 从根目录下开始查找所有的p:'//p'
    • 从当前目录下开始查找所有的p:'.//p'
    • 从当前节点的父节点开始查找所有的p:'..//p'
    • 从当前目录下开始查找直接子节点的p:'./p'
3. 在浏览器中确认查找的元素是否正确
  • 浏览器按F2进入开发者模式,点击console
    • xpath与css方法对比
      方法 路径前的符号 示例
      xpath $x $x("//span")
      css $$ $$('span')
  • 浏览器按F2进入开发者模式,点击elements,按ctrl+F进入搜索模式,输入xpath或css参数路径
4. 浏览器端根据html查看xpath
  • 选中某个路径,点击鼠标右键,依次选择copy-->copy xpath即可复制该元素的xpath

相关文章

网友评论

    本文标题:Selenium学习005-元素选择之xpath

    本文链接:https://www.haomeiwen.com/subject/cpiimftx.html