Selenium用户指南 - 第四章 Selenium 2.0和WebDriver[1]

时间:2021-06-12 09:25:02
目录    上一页    下一页

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.
目录    上一页    下一页