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

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
Selenium 2.0的由來及設(shè)計架構(gòu)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2014/2/7 15:43:22 ] 推薦標簽:Selenium 開源 功能測試工具 WebDriver

在Selenium1.0處于開發(fā)階段的同時,另一款瀏覽器自動化框架WebDriver也正在ThoughtWorks公司的醞釀之中。WebDriver項目的初衷是把端對端測試與底層測試工具隔離開。通常情況下,這種隔離手段通過適配器(Adapter)模式完成。WebDriver正是來源于該方法在許多項目上的不斷實踐應(yīng)用,初是HtmlUnit的封裝,工具發(fā)布后很快開始支持Internet Explorer和Firefox。WebDriver的初代碼在2007年初發(fā)布。

在WebDriver初發(fā)布時,與Selenium RC存在顯著差異,盡管它們都屬于瀏覽器自動化的API工具。對于用戶來說,明顯的區(qū)別在于Selenium RC提供基于字典的API,所有方法都在一個類中開放,而WebDriver的API更面向?qū)ο蟆4送猓琖ebDriver僅支持Java,而Selenium RC提供廣泛的語言支持。技術(shù)差異也很明顯:Selenium Core(RC的基礎(chǔ))基本上是JavaScript應(yīng)用,運行在瀏覽器的安全沙箱之內(nèi)。WebDriver則嘗試原生綁定到瀏覽器中,繞開了瀏覽器的安全模型,代價是框架自身的開發(fā)投入顯著增加。

在2009年8月,兩個項目宣布合并,Selenium WebDriver是合并的成果。

WebDriver的創(chuàng)建者Simon Stewart早在2009年8月的一份郵件中解釋了項目合并的原因:

為何把兩個項目合并?部分原因是WebDriver解決了Selenium存在的缺點(比如,能夠繞過JS沙箱。我們有出色的API),部分原因是Selenium解決了WebDriver存在的問題(例如支持廣泛的瀏覽器),部分原因是因為Selenium的主要貢獻者和我都覺得合并項目是為用戶提供框架的佳途徑。

目前,WebDriver支持的語言綁定包括Java、C#、Python和Ruby。它支持Chrome、Firefox、Opera和移動端Android、iPhone瀏覽器。此外,還有其他關(guān)聯(lián)項目,不在同一源代碼庫中維護,但是和主項目(Selenium WebDriver)緊密合作,例如提供Perl綁定支持、BlackBerry瀏覽器支持,以及“無頭”WebKit——用于持續(xù)集成的測試其無法正常顯示的情況。初的Selenium RC機制仍然維持,幫助WebDriver在瀏覽器不受支持的情況下提供支持。

在兩個項目合并中出現(xiàn)了哪些架構(gòu)方面的問題?學(xué)到了哪些經(jīng)驗和教訓(xùn)?Simon Stewart在《The Architecture of Open Source Applications》一文中做了詳細的描述,本文參考了以下內(nèi)容:

http://www.aosabook.org/en/selenium.html

http://www.infoq.com/cn/news/2011/07/selenium-arch-2

處理復(fù)雜性

軟件是模塊構(gòu)造起來的。這些模塊很復(fù)雜,作為API的設(shè)計人員們,可以選擇如何處理這種復(fù)雜性。極端情況下,可能會傳播這種復(fù)雜性,這意味著API的每一位用戶都需要牽涉其中。另一個極端情況是承擔(dān)盡可能多的復(fù)雜性并將其隔離在某個地方。這個地方對于許多想一探究竟的API用戶來說黑暗而恐怖。折中方案則是API的用戶,如果無須深入了解實現(xiàn)細節(jié),那么只需面對當(dāng)前所遇到的復(fù)雜性即可。

WebDriver的開發(fā)人員更傾向于發(fā)現(xiàn)并在少數(shù)地方隔離這些復(fù)雜性,而不是傳播它。這么做的原因之一是為用戶著想。看看bug列表會知道,他們特別善于發(fā)現(xiàn)問題和缺陷,但是因為許多用戶不是開發(fā)人員,復(fù)雜的API不會受歡迎。開發(fā)人員試圖讓API正確地引導(dǎo)大家。例如,考慮下面來自早期Selenium API的方法,每一個都用于設(shè)置輸入元素的值:

•       type

•       typeKeys

•       typeKeysNative

•       keydown

•       keypress

•       keyup

•       keydownNative

•       keypressNative

•       keyupNative

•       attachFile

下面是WebDriver API中的等價方法:

•       sendKeys

如前所述,這凸顯了RC和WebDriver之間的主要思想差異——WebDriver在努力模擬用戶,而RC在較低層次提供的API讓用戶難以或者無法使用。typeKeys和typeKeysNative之間的區(qū)別在于前者總是使用合成事件(synthetic event),而后者則嘗試利用AWT Robot輸入鍵值。令人失望的是,AWT Robot發(fā)送按鍵事件給具有焦點的任意窗口,也是說可能不是瀏覽器。相比之下,WebDriver的原生事件,直接把事件發(fā)送給窗口處理函數(shù),避免了瀏覽器窗口必須具有焦點的要求。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 亚洲欧美日韩成人一区在线 | 在线观看成人免费视频播放 | 性欧美video另类hd亚洲人 | 欧美在线一| 久99久精品视频免费观看v | 日本片免费观看一区二区 | 精品亚洲综合久久中文字幕 | 加勒比精品久久一区二区三区 | 国产欧美91 | 最近的2019中文字幕免费一页 | 狠狠躁日日躁人人爽 | 一二三四视频社区在线1 | 五月婷婷久 | 亚洲欧美日韩中文综合在线不卡 | 日韩欧美在线精品 | 免费高清欧美一区二区视频 | 一国产大片在线观看 | 三级全黄视频 | 亚洲精品不卡午夜精品 | 国产亚洲精品激情都市 | 亚洲国产成人综合精品2020 | 男女视频免费 | 日韩高清一区二区 | 日韩一二| 777色狠狠一区二区三区香蕉 | 午夜精品aaa国产福利 | 一级毛片在线观看视频 | 婷婷激情网站 | 精品欧美一区二区在线观看 | www.日韩在线观看 | 120秒在线观看免费 128tv在线观看 | 韩国伦理片免费观看 | 日本高清在线一区 | 白丝丝袜高跟国产在线视频 | 天天操天天操天天操 | 极品美女a∨片在线看 | jizzjizz亚洲女人| 天天天天做夜夜夜夜 | 国产成人啪精品视频免费软件 | 亚洲大尺码专区影院 | 播放一级特黄录像 |