selenium Python 学习笔记之二 Xpath 元素定位

1、掌握Xpath和CSS元素定位方式

为什么要使用xpath或者css?因为在页面中,有一些元素无法通过元素的信息精准的定位到元素,所以需要借助xpath和css。

Xpath 是xml文档中查找节点的语法。因为HTML文档也可以被转换为xml(HTML)文档,selenium的用户可以利用这种强大的语言在web因公中查找元素。

2、Xpath定位策略

  -路径定位

    --绝对路径

    --相对路径

  -属性定位

  -属性与逻辑结合

  -属性与层级结合

  定位方法:find_element_by_xpath(xpath) # xpath 为表达式

  按ctrl+F 可以在搜索框对xpath和css表达式进行校验

2.1 路径定位

  ---绝对路径:

    表达式以/html开头,元素的层级之间以/分割

    相同层级的元素可以使用下标,下标从1开始。

    需要列出元素所经过的所有层级元素,在工作中一般不适用绝对路径

  eg: /html/body/div/div/div/p/input    这种情况并不唯一,所以要在有多个元素的相同层级加下标来区分

 

 

   ---相对路径

    匹配任意层级的元素,是以//tag_name  或者//* 开头

    也可以使用下标,下标是从1开始

  eg:  //p[5]/button   

     //form/p[1]/input

  

 

 2.2 元素的属性定位

  使用元素的属性进行定位

  //* 或者//tag_name 开头 ,表达式为//*[@attribute='value']  # attribute为元素的属性名,value表示的是元素对应的属性值,如果使用class的属性进行元素定位时,需要使用class里面的所有值,不能是部分值

eg:  //input[@id = 'cancelA'] 

    //*[@id = 'cancelA']

  

 

 

 2.3  属性与逻辑相结合,就是 多个属性用逻辑运算符组合

  //* 或者//tag_name 开头  //*[@attribute1 = 'value' and @attribute2 = 'value2']

eg:  //*[@type = 'file' and @name= 'upfilea']

 

 2.4 属性与层级相结合

  是以 //* 或者 // tag_name 开头    //p[@id = 'pa']/input 

  在任一层级当中,都可以结合属性来使用

  //p[@id = 'p4']/input

 

 3、XPath扩展

  --//*[text() = 'value']  --value表示要定位的元素的全部文本内容

  --//*[contains(@attribute,'value')]  --attribute 表示属性名,value表示属性的值,要定位的元素中attribute的值包含了value的内容

  --//*[start-with(@attribute,'value')]  --attribute 表示属性的名称,value表示字符串,要定位的元素attribute的属性值以value开头

 

posted @ 2021-08-13 17:59  GalaxyStar  阅读(154)  评论(0编辑  收藏  举报