【Selenium WebDriver】元素定位函数 FindElement

定位Web页面上的元素,用FindElement函数,它可以根据元素的不同属性来快速定位。具体的属性如下:

ID 属性是最常用的,如果页面上元素有一个唯一的ID标识符,用 ID属性能快速定位元素。

但是有时元素不一定有ID属性,或ID不唯一,或ID属性是动态生成的时,可考虑用Name属性。

HTML页面文件:

 1 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us">  2 <head>  3 <body>  4 <form name="loginForm">  5 <label for="username">UserName: </label> <input type="text" name="username" id="uid"/> </br>  6 <label for="password">Password: </label> <input type="password" name="password" id="pid" /> </br>  7 <input name="login" type="submit" value="Login"/>  8 </form>  9 </body> 10 </head>
 1 public class FindElement {
 2 
 3     @Test
 4     public void findElementbyIDandName() {
 5         WebDriver driver = new FirefoxDriver();
 6 
 7         // HTML页面文件路径
 8         String urlPath = ("file:///D:/AnnieJava/HTML/ExamplePage.html");
 9 
10         // 打开指定的URL
11         driver.navigate().to(urlPath);
12 
13         // findElement ByID查找页面上的元素
14         WebElement userID = driver.findElement(By.id("uid"));
15         
16         // findElement ByName查找页面上的元素
17         WebElement userName = driver.findElement(By.name("username"));
18 
19         System.out.println(userName.getTagName() + " " + userID.getTagName());
20         
21         driver.quit();
22 
23     }
24 }

除了用ID,Name属性,我们还可以用Class属性来定位元素,Class属性是为了使用CSS时才有的。

 1 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us">
 2 <head>
 3 <body>
 4 <form name="loginForm">
 5 <label for="username">UserName: </label> <input class="username"> </br>
 6 <label for="password">Password: </label> <input class="password" /> </br>
 7 <input name="login" type="submit" value="Login"/>
 8 </form>
 9 </body>
10 </head>
 1 public class FindElement {
 2 
 3     @Test
 4     public void findElementByClassName(){
 5         WebDriver driver = new FirefoxDriver();
 6         // HTML页面文件路径
 7         String urlPath=("file:///D:/AnnieJava/HTML/ExamplePage1.html");
 8         
 9         // 打开指定的URL
10         driver.navigate().to(urlPath);
11         
12         // findElement ByClassName查找页面上的元素
13         WebElement className = driver.findElement(By.className("username"));
14         
15         System.out.println(className.getSize().toString());
16         
17         driver.close();
18     }
19 }

用页面元素的tag属性,采用tagName,如:

 1 package com.annieyu.test;
 2 import static org.junit.Assert.*;
 3 import org.openqa.selenium.By;
 4 import org.openqa.selenium.WebDriver;
 5 import org.openqa.selenium.WebElement;
 6 import org.openqa.selenium.firefox.FirefoxDriver;
 7 
 8 import org.junit.Test;
 9 
10 public class FindElement {
11 
12     @Test
13     public void findElementBytagName() {
14         WebDriver driver = new FirefoxDriver();
15         // HTML页面文件路径
16         String urlPath = ("file:///D:/AnnieJava/HTML/ExamplePage.html");
17 
18         // 打开指定的URL
19         driver.navigate().to(urlPath);
20 
21         // findElement BytagName查找页面上的元素
22         WebElement tagName = driver.findElement(By.tagName("input"));
23         
24         System.out.println(tagName.getSize().toString());
25         
26         driver.quit();
27     }
28 
29 }

定位link,用linkText或者是partialLinkText,如:

 1 public class FindElement {
 2 
 3  @Test  4 public void findElementByLink() {  5 WebDriver driver = new FirefoxDriver();  6  7 // 打开指定的URL  8 driver.get("http://www.baidu.com");  9 10 // findElement BylinkText查找页面上的元素 11 WebElement hao123Link = driver.findElement(By.linkText("hao123")); 12 13 // findElement BypartialLinkText查找页面上的元素; 14 WebElement moreElement = driver.findElement(By.partialLinkText("123")); 15 16 assertEquals("http://www.hao123.com/", hao123Link.getAttribute("href")); 17 18  System.out.println(moreElement.getText()); 19 20  driver.quit(); 21  } 22 }


 

 

转载于:https://www.cnblogs.com/annieyu/p/3903437.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值