java selenium webdriver实战 页面元素定位

自动化测试实施过程中,测试程序中常用的页面操作有三个步骤

1.定位网页上的页面元素,并存储到一个变量中

2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等

3.设定页面元素的操作值,比如,选择下拉列表中的那个下拉列表或者输入框中输入什么值

其中定位页面元素是三步骤的第一步,本篇介绍常用的定位方法

 

webDriver对象的findElement函数用于定位一个页面元素,findElements函数用户定位多个页面元素,定位的页面元素使用webElement对象进行存储

常用的方法有:

1.使用ID定位

driver.findElement(By.id("ID值"));
WebElement element = driver.findElement(By.id("username"));

 

2.使用name定位

driver.findElement(By.name("name值"));
WebElement element = driver.findElement(By.name("username"));

 

3.使用链接的全部文字定位

driver.findElement(By.linkText("链接的全部文字内容"));
driver.findElement(By.linkText("我的项目"));

 

4.使用部分链接文字定位

driver.findElement(By.partialLinkText("链接的部分文字内容"));
driver.findElement(By.partialLinkText("项目"));

 

5.使用xPath方式定位

XPATH是一门在XML文档中查找信息的语言,它是XML Path的简称. XPATH可用来在XML文档中对元素和属性进行遍历,提供了浏览树的能力

这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素.

浏览器都自带html导出xPath的功能

这里导出的xPath为://*[@id="lst-ib"]

1.xPath绝对定位

查找value值为button的div

webElement button = driver.findElement(By.xpath("/html/body/div/input[@value='查询']"));

使用绝对路径方式是十分脆弱的,因为即便也买你代码发生了微小的变化,也会造成原有的xPath表达式定位失败

2.使用相对路径定位

webElement button = driver.findElement(By.xpath("//div/input[@value='查询']"));

实用举例:

 

查询第二个input,xPath是从1开始的

driver.findElement(By.xpath("//input[2]"));

定位页面的第一张图片

driver.findElement(By.xpath("//img[@href='xxx']"));

定位第二个div中第一个input输入框

driver.findElement(By.xpath("(//div[@class='mob-share-list'])[2]/input[1]"));

模糊定位:start-with

寻找rel属性以ahaha开头的a元素

driver.findElement(By.xpath("//a[starts-with(@rel,'ahaha')]"));

模糊定位:contains

需找内容含有提交二字的button

driver.findElement(By.xpath("//button[contains(text(),'提交')]"));

寻找rel属性包含ahaha的a元素

driver.findElement(By.xpath("//a[contains(@rel,'ahaha')]"));

 

 

5.使用css方式定位

driver.findElement(By.cssSelector("css定位表达式"));
driver.findElement(By.cssSelector("img.plusImg"));
driver.findElement(By.cssSelector("input[type='button']"));
driver.findElement(By.cssSelector("input#div1input"));//根据id的属性值
driver.findElement(By.cssSelector("Img[alt='img1'][href='http://www.sougou.com']"));

 

 

6.使用class名称定位

driver.findElement(By.className("页面的class属性值"));
driver.findElement(By.className("tight left"));//要写全

 

7.使用标签名称定位

driver.findElement(By.tagName("页面的html标签名称"));
webElement element = driver.findElement(By.tagName("a"));
list<webElement> elements = driver.findElements(By.tagName("a"));

 

8.使用js表达式

((JavascriptExecutor) driver).executeScript("js表达式");
JavascriptExecutor js1 = (JavascriptExecutor) driver;
 js1.executeScript("document.getElementsByClassName(\"ke-edit-iframe\")[0].setAttribute(\"name\",\"frame-name\")");

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值