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.