Selenium 2.0 和 WebDriver
注释:我们目前正工作在文档化这些章节。我们相信此处的信息是准确的,然而,要知道我们仍然在这一章上工作着。会提供附加的信息,我们会让这一章变得更加可靠。
Selenium 2.0 特征
Selenium 2.0 有许多令人兴奋的新特征以及对Selenium 1 的改进。这些引入的新特征发布在官方的Selenium Blog的发布声明中。
最主要的新特征是与WebDriver API的集成。该功能标定了大量的限制,并提供了一个可选的,和更简单的编程接口。目标是开发一个面向对象的,为更多数量的浏览器提供附加的支持的,以及对现代的高级Web应用程序测试问题提供改善支持的API。
注释:我们将增加一个Selenium 2.0 新特征描述 - 暂时我们推荐读者阅读发布声明。
Selenium服务器 - 何时使用它
你可能,或可能不,需要Selenium服务器,这取决于你打算如何使用Selenium。如果你打算完全使用WebDriver API,你不一定需要Selenium服务器。Selenium-WebDriver使用每个浏览器对自动化的本地支持直接对浏览器发出调用。如何作出这些调用,依赖于你正在使用的浏览器。
为何你需要Selenium服务器的几个理由是 -
你正在使用Selenium栅格,在许多机器/虚拟机上分布你的测试
你希望连接到一个带有特定版本的浏览器的远程机器,在你目前的机器上没有哪个版本。
你不使用Java绑定,而更喜欢使用HtmlUnit驱动器。
建立一个Selenium-WebDriver项目
安装Selenium用于建立一个开发项目,以便你可以使用Selenium编写程序。如何做依赖于你的编程语言和你的开发环境。
Java
使用Maven是最容易的建立一个Selenium 2.0 Java项目的方式。使用一个Maven pom.xml(项目配置)文件,Maven会下载Java绑定(Selenium 2.0 Java客户端库)和所有它的依赖项,并将为你创建这个项目。一旦你完成了这个步骤,你可以导入Maven项目到你偏爱的IDE,IntelliJ IDEA或Eclipse。
首先,创建一个文件夹去包含你的所有Selenium项目文件。然后你需要一个pom.xml文件,为了使用Maven。这可以用一个文本编辑器创建。我们不会讲授pom.xml文件的细节,或者如何使用Maven,因为已经有与之相关的卓越的参考资料。你的pom.xml文件看起来像这样。创建这个文件在你为项目创建的文件夹中。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MySel20Proj</groupId>
<artifactId>MySel20Proj</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.16.1</version>
</dependency>
</dependencies>
</project>
确信你指定了最新的版本。在编写本文档时,上面列出的版本是最新的,然而在Selenium 2.0这个发布后,有频繁的发布。检查当前发布的Maven下载页,相应地编辑上面的依赖项。
现在,从一个命令行,CD到项目目录并运行Maven如下:
mvn clean install
这会下载Selenium和所有它的依赖项,并增加它们到项目中。
最后,导入这个项目到你偏爱的开发环境中。对不熟悉的用户,我们有提供一个显示这个过程的附录。
导入一个Maven项目到IntelliJ IDEA。导入一个Maven项目到Eclipse。
C#
自Selenium 2.2.0起,C#绑定被发布做带有其他依赖动态链接库的一套签名的动态链接库(dll)。在2.2.0前,所有的Selenium动态链接库是不签名的。要包含Selenium在你的项目中,只需从https://code.google.com/p/selenium/downloads/list下载最新的Selenium .NET的zip文件。如果你使用Windows Vista或以上的版本,你应先于解压缩而解块这个zip文件:右点zip文件,点击“属性(Properties)”,点击“解块(Unblock)”然后点击“确定(OK)”。
解压缩zip文件的内容,在Visual Studio(或你选择的IDE)中增加对每个解压缩的文件的引用到你的项目中
官方NuGet包:<a href="http://www.nuget.org/packages/Selenium.RC">RC WebDriver WebDriverBackedSelenium Support
Python
如果你正在使用Python进行测试自动化,那么你或许已经熟悉Python的开发。从命令行运行下面的命令去增加Selenium到你的Python环境。
使用pip安装Selenium
需要安装pip,同样pip有一个对setuptools的依赖。
讲授Python开发本身已经超出了本文档的范畴,不管怎样,有许多Python相关的资源,你组织中的开发者可能可以帮助你加快速度。
Ruby
如果你正在使用Ruby进行测试自动化,那么你或许已经熟悉Ruby的开发。从命令行运行下面的命令去增加Selenium到你的Ruby环境。
gem install selenium-webdriver
讲授Ruby开发本身已经超出了本文档的范畴,不管怎样,有许多Ruby相关的资源,你组织中的开发者可能可以帮助你加快速度。
Perl
Perl绑定由第三方提供,请参考如何安装/起步的任何第三方的文档。在编写本文档时,有一个已知的Perl绑定。
PHP
PHP绑定由第三方提供,请参考如何安装/起步的任何第三方的文档。在编写本文档时,有三个已知的绑定:By Chibimagic By Lukasz Kolczynski and By the Facebook。
从Selenium 1.0迁移
对那些已经有使用Selenium 1.1编写的测试集的用户,我们提供了一些如何从现存的代码迁移到Selenium 2.0的技巧。Simon Stewart,领先的Selenium 2.0的开发者,写过一篇有关从Selenium 1.0迁移的文章。我们已经包含在附录中。
迁移从Selenium RC到Selenium WebDriver
Selenium-WebDriver起步
WebDriver是一个自动化Web应用程序测试的工具,尤其是验证如预期工作。WebDriver的目标是提供一个友好的API,易于开发和理解,比Selenium RC(1.0)API更容易使用,这将帮助你让测试变得更容易理解和维护。它不与任何特定的测试框架关联,以便可以同样好地使用在单元测试或普通的老的“main”方法中。这一节介绍WebDriver API,并帮助你开始熟悉它。从建立一个WebDriver项目开始,如果你还没有。这个已经在前一节,建立一个Selenium-WebDriver项目,中描述。
一旦你的项目建立,你可以看到WebDriver如同任何常规的类库:它是自包含的,通常不需要记住要开始任何附加的处理,或使用前运行任何安装器,不同于带有Selenium RC的代理服务器。
注释:要使用 Chrome,Opera,Android和iPhone驱动器需要附加的步骤。
你现在已经准备好可以编写代码。一个容易的方法是从这个示例开始,在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) {
// 创建一个Firefox驱动器的新实例
// 注意后面的代码依赖于借口而不是实现
WebDriver driver = new FirefoxDriver();
// 访问Google
driver.get("http://www.google.com");
// 可选的,可以像这样完成相同的事情
// driver.navigate().to("http://www.google.com");
// 按名称找到输入元素
WebElement element = driver.findElement(By.name("q"));
// 键入要搜索的文本
element.sendKeys("Cheese!");
// 提交窗体。WebDriver会找到元素所属的窗体
element.submit();
// 检查页面标题
System.out.println("Page title is: " + driver.getTitle());
// Google搜索用Javascript动态绘制
// 等待页面被装载,10秒后超时
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
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,诸如在浏览器的历史中前后导航,如何测试使用frame和window的Web站点。我们也会提供更多的全面的讨论和示例。
© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.