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

From: http://blog.csdn.net/planisnothing/article/details/7252940


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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章