zoukankan      html  css  js  c++  java
  • selenium 元素定位(三)

    元素定位需要了解 HTML 基础标签

    1.使用 id 定位

      driver.findElement(By.id(“id的值”)

    2.使用 name 定位

      driver.findElement(By.name(“name的值”)

    3.使用 链接 定位

      driver.findElement(By.linkText(“链接的全部文字”)
      driver.findElement(By.partialLinkText(“链接的部分文字”)

    4.使用 className 定位(不推荐,通常结果是多个元素,不准确)

      driver.findElement(By.className(“class属性”)

    5.使用 tagName 定位(不推荐,通常结果是多个元素,不准确)

       driver.findElement(By.tagName("input")); 

    6.使用 css 定位(有学习成本)

      //TO-DO

    7.定位一组元素

      List<WebElement> element = driver.findElements(By.tagName("input")); 

    8.使用 xpath 定位 (推荐使用xpath,万能定位方式)

      WebElement input=driver.findElement(By.xpath("//input[@id='kw']"));

    (1)xpath格式://标签[@属性name='属性value'] 

      / :绝对路径,表示下一级,必须严格按照层级关系写(不推荐使用绝对路径)

      // :相对路径,表示从整个HTML代码来看,下面的任一元素,没有严格的层级关系

      标签:可以用标签,也可以用 * 表任任意;当标签相同时,是一个list,可以使用索引定位,下标从 1 开始,如:WebElement input=driver.findElement(By.xpath("//*[@id='kw']//input[1]"));

    (2)使用 xpath 进行层级定位

      方式1:

      WebElement input=driver.findElement(By.xpath("//form[@id='form']//input[@id='kw']"));

      方式2:

      WebElement form=driver.findElement(By.xpath("//form[@id='form']"));
      WebElement input=form.findElement(By.xpath("//input[@id='kw']"));

    (3)使用 xpath 进行元素的父子元素定位(某个元素不响应对应的事件,比如input元素同级的span等等纯文本元素,不响应点击,这时可以去找它的父子兄弟元素)

      选取当前节点的所有先辈元素中的一个:  //a[@id='kw']/ancestor::a[@id='xx'] ;

      选取当前节点的父节点:parent

      选取当前节点的所有子元素:child

      选取当前节点的所有后代元素(子、孙等):descendant 

      选取文档中当前节点的结束标签之后的所有节点:following 

      选取文档中当前节点的开始标签之前的所有节点:preceding 

      选取当前节点之前的所有同级节点:following-sibling 

      选取当前节点之前的所有同级节点:preceding-sibling

    获取id=3的标签的下一个a标签:"//a[@id='3']/following-sibling::a[1]"

    获取id=3的标签后面的第N个标签:"//a[@id='3']/following-sibling:: *[N]"

    获取id=3的标签的上一个a标签:"//a[@id='3']/preceding-sibling::a[1]"

    获取id=3的标签的前面的第N个标签:"//a[@id='3']/preceding-sibling:: *[N]"

    获取id=3的标签的父标签:"//a[@id='3']/…"

    (4)xpath 的其他定位方式

      //*[ contains ( @id, ’xx ’) ]:id包含xx的标签元素

      //*[ text() =’ xx ’ ]:文本是xx的标签元素

      //*[ contains ( text ( ) , ’xx ’) ]:部分文本是xx的标签元素

      //*[starts-with (@id,’xx’ ) ] :属性以id开始,id的值是xx的标签元素,同还有ends-with

      //*[starts-with (text ( ),’xx’ ) ]:以文本是 xx 开头的标签元素,同还有ends-with

    (5)xpath 验证

      1.在代码调试时进行验证

      2.在Chrome开发者工具中验证

      在console页面输入   $x("xpath"),如下定位百度的搜索框

     方框圈中的即是验证 xpath 书写是否正确,定位到的元素是一个list,如果只有一个元素,index=0,如上图圆圈圈中的 “0”,如果是多个元素,则下面就会有 index=1、2...的元素

      3.可以定位元素直接copy xpath

      定位到元素,点击右键,选择 copy --> copy xpath

  • 相关阅读:
    计算程序运行时间的方法
    poj 2540 Hotter Colder 半平面交 不等式求区域面积
    poj 2954 Triangle Pick公式
    mini2440 w35 制作开机logo 去除logo光标
    java中的闰年的计算
    java中的TCP SERVER代码
    java中的程序关键字累积
    java中的比较大小的代码
    java中的记事本的最初几步
    局域网聊天工具FreeChat 1.0 开发日志
  • 原文地址:https://www.cnblogs.com/yjh1995/p/11986137.html
Copyright © 2011-2022 走看看