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

目錄    上一頁    下一頁

驅動器特性和權衡

支持WebDriver的Selenium-RC

Java版的WebDriver提供了一個Selenium RC API實現。這意味着在使用Selenium RC API時,使用潛在的WebDriver技術。這主要是爲了提供向後的兼容性。它允許那些有現存的、使用Selenium RC API的測試集的用戶,可以在外表下使用WebDriver。提供用於使遷移到Selenium-WebDriver的道路變得輕鬆。同樣,這允許人們並行地,在一個相同的測試中使用兩個API。

Selenium-WebDriver像這樣使用:

// 你可以使用任何WebDriver實現。在這裏Firefox被用於作爲一個示例。

WebDriver driver = new FirefoxDriver();

// 一個“base url”,Selenium用於解析相對URL。

 String baseUrl = "http://www.google.com";

// 創建Selenium實現

Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// 用Selenium執行動作

selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");

// 返回潛在的WebDriver實現。這將引用相同的WebDriver實例,如同上面的“driver”變量

WebDriver driverInstance = ((WebDriverBackedSelenium) selenium).getWrappedDriver();

// 最後,關閉瀏覽器。調用WebDriverBackedSelenium 的stop方法

// 替代調用driver.quit()。否則JVM會繼續在瀏覽器已經關閉後運行

selenium.stop();

優點

  - 允許WebDriver和Selenium API並行地運行。

  - 提供一個簡單的機制用於管理從Selenium RC API到WebDriver的遷移。

  - 不需要獨立的Selenium RC服務器被運行。

缺點

  - 沒有實現每個方法。

  - 更多的高級Selenium用法(使用“browserbot”或其他來自Selenium內核的、內置的Javascript方法)可能不工作。

  - 某些方法可能比較慢,由於潛在的實現上的差別

支持WebDriver

WebDriver不支持Selenium RC支持的所有瀏覽器,如此當使用WebDriver API時,爲了提供那種支持,你可以充分利用SeleneseCommandExecutor。

下面的代碼以這種方式支持Safari(確信取消彈出阻塞)

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("safari");
CommandExecutor executor = new SeleneseCommandExecutor(new URL("http://localhost:4444/"), new URL("http://www.google.com/"), capabilities);
WebDriver driver = new RemoteWebDriver(executor, capabilities);

用這種方法目前有某些較多的限制,尤其是findElement不能如預期般工作。同樣,因爲我們正在使用Selenium內核驅動瀏覽器,你會受到Javascript沙盒的限制。

Selenium WebDriver wiki

你可以在WebDriver的wiki找到進一步的WebDriver資源。

下一步

這一章只是高級別的WebDriver和某些關鍵特徵的瀏覽。一旦熟悉Selenium-WebDriver API,你就會想要學習如何去構造可維護和可擴展的測試集,並在AUT的功能頻繁地變化時降低脆弱性。大多數的Selenium專家現在推薦的方法是使用頁面對象設計模式(Page Object Design Pattern),以及可能的頁面工廠(Page Factory)設計你的測試代碼。Selenium-WebDriver提供對這個的支持,通過提供一個PageFactory類在Java和C#中。這個,以及其他的高級主題,被介紹在下一章。此外,爲了獲得這種技術的高級別描述,你可能希望看看測試設計考慮一章。這些章節介紹了通過使測試代碼更模塊化來編寫更可維護的測試。

© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.
目錄    上一頁    下一頁

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