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

目錄    上一頁    下一頁

WebDriver驅動器入門

WebDriver是編寫測試使用的關鍵的接口名稱,有幾個實現。包括:

HtmlUnit驅動器

這個是目前最快和最輕量級的WebDriver實現。正如名稱所指示的,這是基於HtmlUnit的。HtmlUnit是一個基於Java的、無GUI的Webbrowser實現。對任何語言綁定(除了Java),要求Selenium服務器使用這個驅動器。

用法

WebDriver driver = new HtmlUnitDriver();

優點

  - WebDriver的最快實現

  - 純Java解決方案,因此是平臺無關的

  - 支持Javascript

缺點

  - 模擬其他瀏覽器的Javascript行爲(參加下面)

在HtmlUnit驅動器中的Javascript

流行的瀏覽器中沒有一個使用,由HtmlUnit(Rhino)使用的Javascript引擎。如果你使用HtnlUnit測試Javascript,結果可能和其他瀏覽器產生的結果差別很大。

當我們說“Javascript”時,我們實際上意味着“Javascript和DOM”。雖然DOM是由W3C定義的,但每個瀏覽器在DOM的實現和Javascript如何與之交互上,有它自己的怪異和差別。HtmlUnit有一個令人難忘的DOM的完整實現,以及對使用Javascript的良好支持。但和其他的瀏覽器沒有差別的是:它也有自己的怪異和差別,與W3C的標準以及其他主要瀏覽器的DOM實現,而不管它模擬其他瀏覽器的能力。

使用WebDriver,我們必須作出一個選擇;是使能HtmlUnit的Javascript能力,而冒着團隊遇到問題的風險,還是保持Javascript無效,儘管知道有越來越多的瀏覽器依賴於Javascript?我們採用保守的方法,當我們使用HtmlUnit時,默認不支持。隨WebDriver和HtmlUnit的每個發佈,我們重新評估這個決定:在某個時刻,我們希望使能Javascript在HtmlUnit。

使能Javascript

如果你不能等待,使能Javascript支持是非常容易的。

HtmlUnitDriver driver = new HtmlUnitDriver(true);

這將引起HtmlUnit驅動器默認地模擬Firefox 3.6的Javascript處理。

Firefox驅動器

使用一個Firefox插件控制Firefox瀏覽器。從在機器上安裝中剝離使用的Firefox Profile,僅包含Selenium WebDriver.xpi(插件)。幾個設置也默認地被改變(參見源代碼看看做了哪些改變)。Firefox驅動器有能力運行在Windows,Mac,Linux,並已經測試在版本3.0,3.6,5,6,7和8上測試。

用法

WebDriver driver = new FirefoxDriver();

優點

  - 運行在一個真正的瀏覽器並支持Javascript

  - 比Internet Explorer驅動器更快

缺點

  - 比HtmlUnit驅動器慢

修改Firefox Profile

假定你希望修改用戶代理串(如上所示),你必須修改包含成打的有用的擴展的Firefox Profile。有兩種方法可以得到這個Profile。假定那個Profle已經使用Firefox的Profile管理員創建(firefox -ProfileManager)。

ProfileIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("WebDriver");
profile.setPreferences("foo.bar", 23);
WebDriver driver = new FirefoxDriver(profile);

替代地,如果Profile還沒有在Firefox註冊:

File profileDir = new File("path/to/top/level/of/profile");
FirefoxProfile profile = new FirefoxProfile(profileDir);
profile.addAdditionalPreferences(extraPrefs);
WebDriver driver = new FirefoxDriver(profile);

當我們開發Firefox驅動器的功能的時候,我們暴露了使用它們的能力。例如,直到感覺Linux上的Firefox的本地事件已經穩定,默認無效它們。要使能它們:

FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(profile);

信息

參見wiki頁的Firefox部分,以獲得最新的信息。

Internet Explorer驅動器

這個驅動器使用一個動態鏈接庫控制,因此只有在Windows OS可以使用。每一個Selenium的發佈,它的核心功能已經在版本6,7,8在XP,以及版本9在Windows 7上經過測試

用法

WebDriver driver = new InternetExplorerDriver();

優點

  - 運行在一個真實的瀏覽器,支持Javascript連同你的終端用戶可見的所有怪異模式。

缺點

  - 顯然Internet Explorer驅動器僅僅工作在Windows操作系統!

 

  - 比較而言速度慢(儘管仍然相當快)

  - 在大多數版本XPath沒有本地的支持。自動注入Sizzle比其他瀏覽器滿很多,而且在同一個瀏覽器進行CSS選擇器的比較時較慢。

  - 在版本6和7CSS不被本地支持。替代注入Sizzle。

  - 在IE8和9,CSS選擇器是本地的,但這些瀏覽器不完全支持CSS3。

信息

參見wiki頁的Internet Explorer部分,以獲得最新的信息。請特別注意要求的配置(Required Configuration)部分。

Chrome驅動器

Chrome驅動器由Chromium項目自身維護和支持。WebDriver與Chrome一起工作,通過chromedriver二進制(可以在Chromium項目的下載頁找到)。你需要有chromedriver和安裝的chrome瀏覽器的一個版本。chromedriver需要防止在你的系統路徑的某個地方,以便WebDriver可以自動地發現。Chrome瀏覽器本身由chromedriver在缺省的安裝路徑發現。兩者可以由環境變量重寫。請參考wiki以獲得更多信息。

用法

WebDriver driver = new ChromeDriver();

優點

  - 運行在真實的瀏覽器,並支持Javascript

  - 因爲Chrome是基於Webkit的瀏覽器,Chrome驅動器可能允許你驗證工作在Safari的你的站點。注意因爲Chrome使用它自己的V8 Javascript引擎,而不是Safari的Nitro引擎,Javascript的執行可能有差別。

缺點

  - 比HtmlUnit驅動器慢

信息

參見我們的wiki爲了最新的信息。更多的信息可以被發現在下載頁。

開始運行使用Chrome驅動器。

下載Chrome驅動器可執行文件 ,然後遵循在wiki頁的其他指令。

Opera驅動器

參見Opera驅動器的wiki文章,在Selenium wiki以獲得關於使用Opera驅動器的信息。

iPhone驅動器

參見iPhone驅動器的wiki文章,在Selenium wiki以獲得關於使用Mac iOS驅動器的信息。

Android驅動器

參見Android驅動器的wiki文章,在Selenium wiki以獲得關於使用Android驅動器的信息。


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

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