selenium页面元素定位方法(1)

        在自动化测试实施过程中,测试程序中常用的页面元素操作步骤如下:

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

        (2)对变量中存储的页面元素对象进行操作,例如:单击连接、选择下拉列表或在输入框中输入文字符。

        (3)设定页面元素的操作值。

        以下介绍的方法都是使用java语言描述。

定位页面元素——使用ID定位

        使用ID定位的java语句为:driver.findElement(By.id(""));

        被测试网页的HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findElementDemo</title>
</head>
<body>
	<label>用户名</label>
	<input id="username"></input>
	<label>密码</label>
	<input id="password"></input>
	<br>
	<button id="submit">登录</button>
</body>
</html>

        定位语句代码:

WebElement username= driver.findElement(By.id("username"));
WebElement password= driver.findElement(By.id("password"));
WebElement submit= driver.findElement(By.id("submit"));

        由于页面元素的ID属性在当前网页是唯一的,所以使用ID值定位可以保证定位的唯一性,不会像其他定位方式可能定位到多个元素。但是在实际的项目中,很多核心页面元素都是没有ID属性值的,导致无法使用ID进行定位。可以建议和页面开发工程师约定所有的核心页面元素均需要增加ID值,一次提高网页程序的可测试性,降低自动化测试的实施难度。


定位页面元素——使用name定位

        使用ID定位的java语句为:driver.findElement(By.name(""));

        被测试网页的HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findElementDemo</title>
</head>
<body>
	<label>用户名</label>
	<input name="username"></input>
	<label>密码</label>
	<input name="password"></input>
	<br>
	<button name="submit">登录</button>
</body>
</html>

        定位语句代码:

WebElement username= driver.findElement(By.name("username"));
WebElement password= driver.findElement(By.name("password"));
WebElement submit= driver.findElement(By.name("submit"));

        页面元素的name和ID不一样,name属性在当前的页面可以不是唯一的,而ID属性值则必须是唯一的。因此使用name方式定位可能会同时定位到多个元素,还需要进一步定位才能获得实际想要的唯一页面元素。

定位页面元素——使用链接的全部文字定位

        使用ID定位的java语句为:driver.findElement(By.linkText(""));

        被测试网页的HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findElementDemo</title>
</head>
<body>
	<a href="http://www.baidu.com">baidu 搜索</a>
	<a href="http://www.sogou.com">sogou 搜索</a>
</body>
</html>

        定位语句代码:

WebElement link= driver.findElement(By.linkText("sogou 搜索"));
WebElement link= driver.findElement(By.linkText("baidu 搜索"));

        使用这个方法定位链接需要完全匹配链接的显示文字,常用于页面中存在多个链接文字高度相似的情况,且无法使用部分链接文字进行定位。

定位页面元素——使用部分链接文字定位

        使用ID定位的java语句为:driver.findElement(By.name(""));

        被测试网页的HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findElementDemo</title>
</head>
<body>
	<a href="http://www.baidu.com">baidu 搜索</a>
	<a href="http://www.sogou.com">sogou 搜索</a>
</body>
</html>
        定位语句代码:
WebElement link= driver.findElement(By.partialLinkText("baidu"));
List<WebElement> links=driver.findElements(By.partialLinkText("搜索"));

       第一行代码是查找包含“baidu”字母的链接,如果含有多个含有“baidu”字母的链接,则会将第一个匹配的链接对象复制给link变量。

        第二行代码则是查找含有“搜索”两个字的所有链接,存储到名为links的List容器中。

        这种方式只需要模糊匹配链接的显示文字即可,常用于匹配页面链接文字不定期发生少量文字变化的情况。使用模糊匹配的方式可以提高链接定位的准确率,也可以用于模糊匹配一组链接的情况。

定位页面元素——使用标签名称定位

        使用ID定位的java语句为:driver.findElement(By.tagName(""));       

        被测试网页的HTML代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findElementDemo</title>
</head>
<body>
	<a href="http://www.baidu.com">baidu 搜索</a><br/>
	<a href="http://www.sogou.com">sogou 搜索</a>
</body>
</html>

        定位语句代码:

WebElement searchBox = driver.findElement(By.tagName("a"));
List<WebElement> links=driver.findElements(By.tagName("a"));

        第一行标识查找页面上的链接,如果有多个链接则只有第一个被匹配的链接对象会赋值给link变量。

        第二行则是查找页面上所有的链接,并存储到名为links的List容器中。

        这种方式主要用于匹配多个页面元素的情况,将查找到的网页元素对象进行计数、遍历、修改属性等操作。

定位页面元素——使用Class名称定位

        使用ID定位的java语句为:driver.findElement(By.className(""));       

        被测试网页的HTML代码

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input .spread {
	FONT-SIZE: 20pt;
}
input.tight {
	FONT-SIZE: 10pt;
}
</style>
</head>
<body>
	<input class="spread"  type=text></input>
	<input class="tight"  type=text></input>
</body>
</html>
        定位语句代码:
WebElement input = driver.findElement(By.className("tight"));
List<WebElement> inputs=driver.findElements(By.tagName("tight"));
       根据class属性值,可以查找一个或者一组显示效果相同的页面元素。第一行则会找出classname为tight的元素,如果有多个,取第一个;第二行则是找出classname为tight的元素,全部存放在名为inputs的list对象里。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值