【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