51Testing软件测试论坛

标题: 定位页面元素方法的总结 [打印本页]

作者: zhangyu19820405    时间: 2019-3-7 14:11
标题: 定位页面元素方法的总结
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定位表达式‘)”);



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

作者: zhangyu19820405    时间: 2019-3-11 13:40
2.使用class名称定位
在被测试网页中,查找第一个div标签中的按钮。
CSS定位表达式:input.spread
JAVA定位语句:WebElement button = driver.findElement(By.cssSelector("input.spread"));
代码解释:CSS表达式使用input页面元素的class属性名称来进行定位。

作者: zhangyu19820405    时间: 2019-3-11 13:50
3.使用ID属性值定位
  在被测试网页中,查找第一个div标签中ID为“div 1 input”的input页面元素。
  CSS定位表达式:input#div1input
  Java定位语句:WebElement input=dirver.findElement(By.cssSelector("input#div1input"));
  代码解释:CSS表达式使用input页面元素的ID属性“div1input”进行定位。
作者: zhangyu19820405    时间: 2019-3-11 14:13
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属性进行页面元素的定位。在某些复杂的定位场景,可使用多个属性来定位页面中的唯一元素。

作者: zhangyu19820405    时间: 2019-3-11 15:24
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"关键字链接。
使用此模糊定位方式,可匹配动态变化属性值的页面元素,只要找到属性值固定不变的关键字部分,即可进行模糊匹配定位。此方式为复杂定位难题的杀手锏。

作者: zhangyu19820405    时间: 2019-3-11 15:50
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下子页面元素的目标。
作者: zhangyu19820405    时间: 2019-3-11 15:54
Xpath定位和CSS定位的比较:
  Xpath和CSS的定位方式相似,Xpath定位功能相对更强大一些,而CSS定位方式执行速度更快,但是某些浏览器并不支持CSS定位方式。由于在自动化测试实施中使用XPath定位方式要比使用CSS定位方式普遍得多,所以建议有限掌握Xpath的定位方法。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2