Selenium2.0功能测试之Web元素的定位(Java版)

页面元素的定位可以说是WebDriver中最核心的内容了,我们定位元素的目的主要有:操作元素,获取该元素的属性,获取元素的text以及获取元素的数量,WebDriver 为我们提供了以下几种方法来帮我们定位web元素:

  1. 通过元素的id获取
  2. 通过元素的name获取
  3. 通过元素的tag name 获取
  4. 通过css xpath 获取 
  5. 通过xpath 获取 
  6. 通过class name  获取 
  7. 通过一部分的link text 获取元素 
  8. 通过全部的link text 获取元素 

  • 唯一元素的定位:
package org.coderinfo.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class FindSingleElements {
    private static final String URL = "file:///C:/Desktop/Selenium/login.html"; // 需要更改这个URL到你自己的login.html 的文件路径
    
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize(); //最大化浏览器界面
        
        driver.get(URL); //访问谷哥的首页 ,此处放弃度娘。
        Thread.sleep(2000); //Wait for page load
        
        driver.findElement(By.id("inputEmail")).sendKeys("[email protected]"); // use id to find a web element
        Thread.sleep(2000);
        
        driver.findElement(By.name("password")).sendKeys("#####");    // use name to find a web element
        Thread.sleep(2000);
        
        driver.findElement(By.cssSelector("#inputEmail")).clear();   // use css selector to find a web element
        Thread.sleep(2000);
        
        driver.findElement(By.linkText("UseLink")).click();  // use link text to find a web element
        Thread.sleep(2000);
        
        driver.findElement(By.partialLinkText("Use")).click(); // use partial link text to find a web element
        Thread.sleep(2000);
        
        String formClassName = driver.findElement(By.tagName("form")).getAttribute("class");  //use tag name to find a web element
        System.out.println(formClassName);
        Thread.sleep(2000);
        
        String text = driver.findElement(By.xpath("/html/body/form/div[1]/div")).getText();  // use xpath to find a web element
        System.out.println(text);
        
        String inputText = driver.findElement(By.className("inputClass")).getAttribute("placeholder");  // use class name to find a web element
        System.out.println(inputText);
        
        Thread.sleep(5000);
        driver.quit();  //彻底退出WebDriver
    }
}
这里是要测试的页面login.html的源码:
<!DOCTYPE html>
<html>
    <head>
        <title>For Selenium Test</title>
        <style type="text/css">
            div {
                margin-top:10px
            }
            
            #inputEmail {
                color:red
            }
        </style>
    </head>
    
    <body>
        <center>
            <h3>Find Single Element</h3>
        </center>
        <form class="form-h">
            <div class="items">
                <div class="item">
                    Use ID:<input type="text" id="inputEmail" name="email" placeholder="Email"/>
                </div>
            </div>
            
            <div class="items">
                <div class="item">
                    Use Name:<input type="password" id="inputPassword" name="password" placeholder="Password" class="inputClass"/>
                </div>
            </div>
            
            <div class="items">
                <div class="item">
                    Use Link:<a href="#">UseLink</a>
                </div>
            </div>
        </form>
    </body>
</html>
  • 一组元素的定位 :
package org.coderinfo.demo;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class FindElements {
    private static final String URL = "file:///C:/user/Desktop/Selenium/checkbox.html";  //改为你自己的url
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();  //create a chrome driver
        driver.manage().window().maximize();  // max size the chrome window
        
        driver.get(URL);   //open URL with the chrome browser
        try {
            Thread.sleep(2000);                  // wait for web loading
        } catch (InterruptedException e) {
            e.printStackTrace();
        }                         
        
        List<WebElement> webElements = driver.findElements(By.cssSelector("input[type='checkbox']"));  // Use css selector to get all the checkbox 
        for (WebElement webElement : webElements) {   // loop through all elements
            webElement.click();    // click current element == select the current checkbox
        }
        
        System.out.println("Count: " + webElements.size());  //print the count of all the elements
        
        try {
            Thread.sleep(3000);  // wait 3s 
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        webElements = driver.findElements(By.tagName("input"));  // use tag name to get all the checkbox
        
        webElements.get(webElements.size()-1).click();  // Cancel the last selected checkbox
        
        try {
            Thread.sleep(5000);  // wait 5s 
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        driver.quit();  // close webdriver
    }
}

测试页面checkbox.html的代码:

<!DOCTYPE html>
<html>
    <head>
        <title>Get ALl CheckBox</title>
        <style type="text/css">
            h2 {
                text-align:center
            }
        </style>
    </head>
    
    <body>
        <h2>CheckBox<h2/>
        <form class="form-h">
            <div class="input-c">
                <input type="checkbox" class="in" id="in1"/>
            <div>
            
            <div class="input-c">
                <input type="checkbox" class="in" id="in2"/>
            <div>
            
            <div class="input-c">
                <input type="checkbox" class="in" id="in3"/>
            <div>
            
            <div class="input-c">
                <input type="checkbox" class="in" id="in4"/>
            <div>
            
            <div class="input-c">
                <input type="checkbox" class="in" id="in5"/>
            <div>
            
        </form>
    </body>
</html>



你可能感兴趣的:(Selenium2.0功能测试之Web元素的定位(Java版))