51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2266|回复: 7
打印 上一主题 下一主题

定位页面元素方法的总结

[复制链接]
  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-3-7 14:11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1.使用ID定位:                  driver.findElement(By.id("ID值“));
    2.使用name定位:              driver.findElement(By.name("name值"));
    3.使用连接的全部文字定位:driver.findElement(By.linkText("链接的全部文职内容"));
    4.使用部分链接文字定位:   driver.findElement(By.partialLinkText("链接的全部文职内容"));
    5.使用XPath方式定位:        driver.findElement(By.xpath("XPath定位表达式"));
    6.使用CSS方式定位:          driver.findElement(By.cssSelector("CSS定位表达式"));
    7.使用Class名称定位:        driver.findElement(By.className("页面元素的Class属性值"));
    8.使用标签名称定位:         driver.findElement(By.tagName("页面中的HTML标签名称"));
    9.使用jQuery方式:             js.executeScript("returnjQuery.find('jQuery定位表达式‘)”);


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2019-3-11 13:36:14 | 只看该作者
    CSS定位表达式:
    (不推荐在频繁变化的被测试页面上使用绝对路径方式定位。)
    1.使用相对路径定位:
      在被测试网页中,查找第一个div标签中的按钮。
      CSS定位表达式:
      表达式1:input[type='button']
    Java定位语句:
      WebElement button = diriver.findElement(By.cssSelector("input[tpye='button']));
    代码解释:CSS表达式使用元素名称和元素属性值进行相对路径的定位。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2019-3-11 13:40:12 | 只看该作者
    2.使用class名称定位
    在被测试网页中,查找第一个div标签中的按钮。
    CSS定位表达式:input.spread
    JAVA定位语句:WebElement button = driver.findElement(By.cssSelector("input.spread"));
    代码解释:CSS表达式使用input页面元素的class属性名称来进行定位。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2019-3-11 13:50:22 | 只看该作者
    3.使用ID属性值定位
      在被测试网页中,查找第一个div标签中ID为“div 1 input”的input页面元素。
      CSS定位表达式:input#div1input
      Java定位语句:WebElement input=dirver.findElement(By.cssSelector("input#div1input"));
      代码解释:CSS表达式使用input页面元素的ID属性“div1input”进行定位。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2019-3-11 14:13:02 | 只看该作者
    4.使用页面其他属性值定位。
    在被测试网页中,查找div标签中的第一张图片。
    CSS定位表达式:表达式1:Img[alt='div1-img1']
                             表达式2:img[alt='div1-img1'][href=http://www.sogou.com]

    Java定位语句:WebElement img1 = driver.findElement(By.cssSelector("Img[alt='div1-img1']"));
                          WebElement img2 = driver.findElement(By.cssSelector("Img[alt='div1-img1'][href='http://www.sogou.com']"));

    Css表达式1:表示使用img页面元素的alt属性“div1-img1”进行定位。若想定位的页面元素始终具有唯一的属性值,此定位方法可解决页面频繁变化的部分定位难题。
    CSS表达式2:表示同时使用了alt属性和href属性进行页面元素的定位。在某些复杂的定位场景,可使用多个属性来定位页面中的唯一元素。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2019-3-11 15:24:43 | 只看该作者
    5.使用页面元素属性值的一部分关键字定位。
    在被测试页面中,查找soguo搜索的链接。
    CSS定位表达式:表达式1:a[href^='http://www.so']
                             表达式2:a[href$='gou.com']
                             表达式3:a[href*='so']
    Java定位语句:WebElement link1 = driver.findElement(By.cssSelector("a[href^='http://www.so']"));
                          WebElement link2 = driver.findElement(By.cssSelector("a[href$='gou.com']"));
                          WebElement link3 = driver.findElement(By.cssSelector("a[href*='so']"));

    代码解释:CSS表达式1:表示匹配链接地址开头包含“http://www.so"关键字的链接。
                    CSS表达式2:表示匹配链接地址结尾包含"gou.com"关键字的链接。
                    CSS表达式3:表示匹配链接地址包含"so"关键字链接。
    使用此模糊定位方式,可匹配动态变化属性值的页面元素,只要找到属性值固定不变的关键字部分,即可进行模糊匹配定位。此方式为复杂定位难题的杀手锏。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2019-3-11 15:50:30 | 只看该作者
    6.使用页面元素进行子页面元素查找。
      在被测试网页中,查找第一个div下的第一个页面元素。
      CSS定位表达式:div#div1>input#div1input
      Java定位语句:WebElement input = driver.findElement(By.cssSelector("div#div1>input#div1input"));
      代码解释:CSS表达式中的div#div1表示在被测试页面上定位到ID属性值为div1的div页面元素,“>"表示在div页面元素里面进行子页面元素的查找,input#div1 input表示查找ID属性值为div1 input的input页面元素。此方式可实现查找div下子页面元素的目标。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-10-28 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2019-3-11 15:54:21 | 只看该作者
    Xpath定位和CSS定位的比较:
      Xpath和CSS的定位方式相似,Xpath定位功能相对更强大一些,而CSS定位方式执行速度更快,但是某些浏览器并不支持CSS定位方式。由于在自动化测试实施中使用XPath定位方式要比使用CSS定位方式普遍得多,所以建议有限掌握Xpath的定位方法。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 17:58 , Processed in 0.064334 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表