5.如何将自动化工程从Selenium1.0迁移到Selenium2.0
已经在Selenium1.0上构建测试工程的用户,我们为您提供了一份指导如何将已有的代码迁移到Selenium2.0。Selenium2.0的首席开发工程师Simon Stewart为此撰写了一片文章:Magrating From Selenium RC to Selenium WebDriver。
6.Selenium-WebDriver API简介
WebDriver可以用来实现Web应用程序的自动化测试,特别适合于验证实际结果是否符合预期结果的场景。WebDriver旨在提供比 Selenium1.0更加易用、友好的API,便于用户的探索和理解,从而使测试用例变得容易阅读和维护。WebDriver没有使用任何第三方测试框架,所以它可以很好与单元测试工具或者古老的main函数结合使用。本章节将介绍如何使用WebDriver的API,帮助你慢慢开始了解 WebDriver。如果你还没有新建一个Selenium工程,请先完成这个操作,在这个章节的上面有详细的描述。
当你创建完Selenium工程后,你会发现WebDriver和普通的第三方库一样是完全独立的,在你使用之前不需要启动任何额外的进程或者安装程序,相反如果你使用Selenium-RC需要先启动代理服务器。
注意:当你使用如下WebDriver时需要额外的步骤:Chrome Driver,Opera Driver,Android Driver,IPhone Driver。
现在你肯定跃跃欲试要写一些代码了。我们以一个简单的例子来开始第一段旅程:在Google上搜索“Cheese”,并打印出搜索结果网页的标题。
package org.openqa.selenium.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Selenium2Example {
public static void main(String[] args) {
// 创建一个FirefoxDriver实例
// 这个类依赖于接口而不是接口的实现
WebDriver driver = new FirefoxDriver();
// 使用get方法访问Google
driver.get("http://www.google.com");
// 使用下面这个方法也能够达到访问Google的目的
// driver.navigate().to("http://www.google.com");
// 找到html输入框的name
WebElement element = driver.findElement(By.name("q"));
// 输入要查找的内容
element.sendKeys("Cheese!");
// 提交表单,WebDriver会自动找到我们需要提交的元素所在的表单
element.submit();
// 打印网页的标题
System.out.println("Page title is: " + driver.getTitle());
// Google的搜索网页会通过JS动态渲染
// 等待页面加载完毕,超时时间为10秒
(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// 控制台上将打印如下信息: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
// 关闭浏览器
driver.quit();
}
}
在本章节的接下来篇幅,我们将学习如何使用WebDriver操作你的浏览器,如何使用框架和窗口来测试Web网站。当然,我们将提供更加翔实的论述和举例。