Selenium2.0功能测试之Web元素的定位

页面元素的定位可以说是WebDriver中最核心的内容了,我们定位元素的目的主要有:操作元素,获取该元素的属性,获取元素的text以及获取元素的数量,WebDriver 为我们提供了以下几种方法来帮我们定位web元素:
  通过元素的id获取
  通过元素的name获取
  通过元素的tag name 获取
  通过css xpath 获取
  通过xpath 获取
  通过class name  获取
  通过一部分的link text 获取元素
  通过全部的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("coderinfo@163.com"); // 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>
相关文章:
   


最新内容请见作者的GitHub页:http://qaseven.github.io/
  
上一篇:Selenium2(WebDriver)总结(三)---元素定位方法


下一篇:闭合浮动,元素浮动或绝对定位后失去文档流的友好解决办法