亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
Selenium 2.0的由來及設計架構
作者:網絡轉載 發布時間:[ 2014/2/7 15:43:22 ] 推薦標簽:Selenium 開源 功能測試工具 WebDriver

WebDriver設計

WebDriver的API被定位為“基于對象的”。接口被明確定義并努力堅持只包含一個角色或者責任,而不是將每一個可能的HTML標記模塊化為單獨的類,只有一個WebElement接口。通過這種方式,開發人員使用支持自動補全的IDE即可被提示下一步工作。其結果類似于下面的代碼片段(Java語言):

WebDriver driver = new FirefoxDriver();

driver.<user hits space>

此時,包含13個方法的短列表顯示出來,用戶選擇其中一個:

driver.findElement(<user hits space>)

大多數IDE現在顯示預期參數的類型提示,在這個例子中是“By”。By包含許多預定義的靜態工廠方法,用戶可以快速地完成剛才的代碼:

driver.findElement(By.id("some_id"));

基于角色的接口

WebDriver廣泛使用了基于角色的接口。例如,有一個JavascriptExecutor接口提供了在當前頁面環境中執行任意Javascript語句塊的功能。WebDriver實例對該接口的成功映射可以提示你利用該方法完成自己的工作。

處理大量的組合

假設X種瀏覽器和Y種語言,我們很容易會掉進X×Y種實現中,將會面臨維護成本的大量攀升。

減少WebDriver支持的編程語言種類是降低成本的途徑之一,但是基于兩種原因不想這樣做。首先,從一種語言切換到另一種時人們會承受認知負荷,因此對用戶來說如果測試框架(WebDriver)能夠允許他們采用在日常開發中使用的編程語言來編寫測試,那么這是巨大的優勢。其次,在單一項目中混合多種語言可能會讓團隊很不方便,而且公司的編碼規范和需求通常要求技術單一純正性,因此,減少支持語言的種類不是可選項。

減少支持瀏覽器的數量也不是一種選擇——當項目組決定在WebDriver中淘汰對Firefox 2的支持時,遇到了強烈的抗議,而事實上當時,Firefox 2只占了瀏覽器市場份額不到1%。

的選擇是努力使所有瀏覽器對語言的綁定看起來相同:它們應該提供統一的接口,可以輕松地通過各種語言解決。更重要的是,希望語言綁定本身盡可能的易于編寫,這意味著需要盡可能的使它們保持簡潔。在底層driver中放入了盡可能多的邏輯來支持這種設計:放棄放入dirver的每一塊功能都意味著需要通過支持的每一種語言實現,而這代表了大量的工作量。

WebDriver設計中的缺陷

通過這種方式發布功能的缺陷在于除非有人知道某個特定的接口存在,否則他們可能不會意識到WebDriver支持這種功能,在API的可發掘性上存在缺憾。當然在WebDriver剛發布的時候,我們會投入大量時間來指導人們找到合適的接口。現在我們已經花費大量精力來編寫文檔,隨著API獲得廣泛應用,用戶會越來越容易的找到所需的文檔。

從實現者的觀點來看,緊密綁定瀏覽器也是一種設計缺陷,雖然無法避免。支持新瀏覽器時需要投入巨大的努力,經常需要數次嘗試才能找到正確方法。具體的例子是,Chrome驅動經過了四次完全重寫,IE驅動也有三種關鍵重寫。緊密綁定瀏覽器的優點在于它提供了更多控制權。

遠程Webdriver協議的第二次迭代因此使用了HTTP傳輸機制和UTF-8編碼的JSON作為默認的編碼,使客戶端可以很容易的使用各種有限支持Unicode的語言,因為UTF-8向后兼容ASCII。發送給服務器的命令使用URL以確定哪個命令被發送,并編碼在一個數組中的命令的參數。

例如,一個命令WebDriver.get("http://www.example.com")映射到一個到URL的POST請求,編碼了回話ID和以”/”結束,使用像{[}'http://www.example.com'{]}這樣的參數的陣列。返回的結果更有結構性,有一個返回值和錯誤碼的代碼占位。不久到了第三次遠程協議迭代,使用命名參數字典取代了參數請求數組。這有利于更方便的調試請求,消除了客戶端失誤使用了參數的可能性,使得系統更健壯。當然,決定使用正常的HTTP錯誤碼表示確定的返回值和響應,例如,如果用戶試圖調用一個沒有映射到的URL,或者當我們想表示空響應時,這是種合適的方式。

Webdriver遠程協議有兩個錯誤處理層次,一個無效的請求和一個失敗的命令。無效的請求的例子是請求一個服務器并不存在的資源,或者可能是資源不理解,(例如發送一個DELETE命令給用于處理當前頁面的URL的資源)。這種情況下,一個正常的HTTP響應是4XX。對于失敗的命令,錯誤碼設置為500(服務器端錯誤),并且返回的數據包含更詳細的錯誤分解。

當包含數據的響應從服務器發出后,它是一個JSON對象的格式:

Key                   描述

Sessionid   服務器使用的決定何處路由特定會話命令的不透明處理

狀態值     一個概括命令結果數字狀態碼,非零值代表命令失敗響應的JSON值

例如:

FirefoxDriver.prototype.getElementAttribute =
function(respond, parameters) {
    var element = Utils.getElementAt(parameters.id, respond.session.getDocument());
    var attributeName = parameters.name;
    respond.value = webdriver.element.getAttribute(element, attributeName);
    respond.send();
};

因為可見,我們會在響應中編碼狀態碼,使用非零值表示發生了糟糕的事故。首先在IE driver上使用了狀態碼,而且被用于了線協議。因為所有的錯誤碼在不同的driver中一致的,在不同的driver中可以使用特殊的語言完成共享錯誤處理的代碼,使客戶端更容易實現。

遠程webdriver服務簡單講是一個Java servlet,扮演多重角色,路由收到的所有的命令給對應的Webdriver實例。諸如此類的事情,一個大二的學生都能完成。Firefox driver也完成了遠程Webdriver協議,它的架構更加有趣,所以讓我們跟蹤一個從語言綁定的會話到后端一直到返回給用戶的請求。

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: www.五月.com| 黄色片网站免费 | 亚洲第一区视频在线观看 | 午夜性刺激免费视频观看不卡专区 | 日韩欧美一二三区 | 成人看片黄在线观看 | 500短篇超污多肉推荐短视频 | 国产一级高清视频 | 国产伦精品一区二区 | 成人高清视频在线观看 | 色婷婷狠狠久久综合五月 | 波多野结衣免费一区二区三区香蕉 | 国产成人无精品久久久 | 国产三级全黄 | 人人干人人上 | 欧美一级特黄视频 | 一个人在线免费观看www视频 | 欧美大陆日韩 | 日本3p视频在线看高清 | 亚洲一区中文字幕在线观看 | 久久国产综合精品欧美 | 天天国产视频 | 美女视频ww8888网网 | 色综合色狠狠天天综合色hd | 亚欧成人一区二区 | 免费人成在线蜜桃视频 | 天天操天天射天天色 | 久久精品不卡 | 操你啦在线观看 | 国产旗袍丝袜在线观看视频 | 午夜影湿院 | 寂寞午夜影院 | 97国产精品视频观看一 | 香蕉久久综合 | 怡红院免费全部视频在线视频 | 国内精品九一在线播放 | 日本高清视频成人网www | 一个人免费观看www视频 | 120秒在线观看免费 128tv在线观看 | 一级片中文字幕 | 天天色天天射天天操 |