selenium自动化实战之元素定位

  1. 元素定位的方法:(6+2)
    6: 6种常用的操作方法(id(唯一),class name,name,tag name,link,partial link)
    2: 2种通用万能的操作方法(xpath定位,css定位)

  2. 8大元素定位的详解

    1. id定位:页面元素属性名id的值(id 是唯一的),但不是所有的元素都有id,有id属性值的元素,id定位是首选的元素定位方式
      定位代码:driver.find_element_by_id('id属性的值') 返回的是WebElement对象,可以调用属性和方法
      
    2. name定位:元素的name属性,但name不是唯一的,name的属性值可以相同
      定位代码:driver.find_element_by_name('name属性的值') 找一单一元素,从上往下,符合条件的第一个值
      driver.find_elements_by_name('name属性的值') 找所有匹配的元素,返回的是列表,每一个单一的元素可以调用属性与方法
      
    3. class name定位:元素class属性,主要是用class对元素进行分组,对元素设置相同的属性
       定位代码:driver.find_element_by_class_name('class属性的值')
      (当class属性有多个值的时候,要分开写,不能把所有的属性值以空格分开写在一起)
      
    4. tag name定位:元素的标签名(<标签名 属性名=’属性值’>文本类容</标签名>)
      定位代码:driver.find_element_by_tag_name('标签名称')
      
    5. link定位:链接文本内容全匹配
      定位代码:driver.find_element_by_link_text(a元素的文本内容)
      
    6. partial liink定位:链接文本内容部分匹配(包含的意思)
      定位代码:driver.find_element_by_partial_link_text(a元素的部分文本内容)
      
    7. xpath定位: 针对元素的单一特性进行定位的方法,包含绝对定位与相对定位

      定位代码:driver.find_element_by_xpath('xpath表达式') ctrl+F 在浏览器中 检查xpath路径是否正确
      

      html元素:最顶层的祖先
      head和body:为兄弟关系,同一水平位置
      body之下所有元素: 按照层级 子代关系
      xpath基本定位语法:
      selenium之元素定位

      1. 绝对定位: 严格按照路径与位置来定位,以/开头(该定位方法不可取,页面元素一旦发生改变,路径必须重写,而且检索慢)
      2. 相对定位: 不考虑位置与路径,灵活性高,以//开头。(考虑页面是否存在符合表达式的元素即可)包含很多种方法

        1. 组合标签+属性定位: //标签名[@属性名=’属性值’] //标签名[@属性名=’属性值’ and @属性名=’属性值’] 可以加逻辑运算:and / or
        2. 组合元素定位: //条件一//条件二 (后一个条件是在前一个条件得到的结果之后再去搜索的) //标签名[@属性名=’属性值’]//标签名[@属性名=’属性值’]
        3. 文本内容匹配: 函数 text() 文本全部匹配:text()=文本内容 ;
          文本部分匹配:contains(text(),部分文本内容)

          //标签名[text()='元素的文本内容']  //标签名[contains(text(),'元素的文本内容')]  //标签名[contains(@属性,'部分属性值')]
          
        4. 轴定位表达式: 轴运算名称 全部以/ (表达式/轴定位名称::标签名[@属性名=’属性值’])

          1. ancestor: 祖先(根节点)
          2. parent : 父节点
          3. preceding:当前元素节点标签之前的所有的节点(html页面先后顺序)
          4. preceding-sibling:当前元素节点标签之前的所有的兄弟节点(同级)-》哥哥姐姐
          5. following:当前元素节点标签之后的所有的节点 (html页面先后顺序)
          6. following-sibling:当前元素节点标签之后的所有的兄弟节点(同级)-》弟弟妹妹
          7. 使用语法:轴名称::节点名称
            //标签名[@属性名='属性值']/parent::标签名::节点名称/preceding-sibling::标签名//标签名[@属性名='属性值']
            
            parent 是前一个表达式的父亲 parent::标签名(标签名是该节点(父亲)的标签的名称)
    8. css定位:
      定位代码:driver.find_element_by_css_selector(css表达式)
      css基本定位语法:
      selenium之元素定位
      selenium之元素定位
      selenium之元素定位