Selenium 歷史
故事始於 2004 年
故事始於 2004 年,在芝加哥的 ThoughtWorks,Jason Huggins 在當時為了測試內部 Time and Expenses 應用程式 (Python, Plone),建立了核心模式,名為「JavaScriptTestRunner」。自動化測試任何應用程式是 ThoughtWorks 風格的核心,考量到這間顧問公司對敏捷開發的傾向。Paul Gross 和 Jie Tina Wang 也提供了協助。對他們來說,這是一份日常工作。
Jason 開始向各個同事展示這個測試工具。許多人對其即時且直覺的視覺回饋感到興奮,以及它作為其他 Web 應用程式可重複使用測試框架的潛力。
不久之後的 2004 年,ThoughtWorks 的同事 Paul Hammant 看到了演示,並開始討論 Selenium 的開源,以及定義 Selenium 的「驅動」模式,讓你可以從你選擇的語言透過網路線使用 Selenium,這將能繞過「同源政策」。其他(當時的)同事,Aslak Hellesoy 和 Mike Melia,實驗了關於「伺服器」部分的不同想法,包括頁面重寫以繞過同源政策。Paul 用 Java 寫了最初的伺服器部分,而 Aslak 和 Obie Fernandez 將客戶端驅動程式移植到 Ruby,為更多語言的驅動程式奠定了基礎。
世界各地不同辦公室的 ThoughtWorkers 為商業專案採用了 Selenium,並從這些專案中學到的經驗回饋貢獻給 Selenium。Mike Williams、Darrell Deboer 和 Darren Cotterill 都協助提高了 Selenium 的功能和穩健性。
同時,在 ThoughtWorks 之外...
在 Bea,Dan Fabulich 和 Nelson Sproul 得出結論,驅動程式/伺服器到瀏覽器的架構並不是最有用或最靈活的,因此他們 fork 了驅動程式碼,並將其打造成一個獨立伺服器,利用並捆綁了 MortBay 的 Jetty 作為 Web 代理。當程式碼合併回去後,它被稱為「Selenium Remote Control」,而舊的驅動程式碼線和功能則被淘汰。
Pat Lightbody 同時也參與進來,他有一個商業想法,需要他辭去日間工作(Jive Software)。這個想法是「Hosted QA」,最終被移到 Gomez 的服務線。Pat 與 Dan 和 Nelson 一起工作,使 Selenium RC 在大規模部署中更加穩定。Pat 私下為 Hosted QA 編寫了一個 grid,可以截取各種狀態下瀏覽器的螢幕截圖,並同時照顧多個客戶。Jason 在一年前也有相同的 hosted QA 想法,但他沒有辭去日間工作來做這件事。
2007 年,Dan 轉職到快速成長的 Redfin,Redfin 也兼職贊助他投入 Selenium 的時間,並鼓勵他參與演講活動。
Selenium IDE:日本製造
在日本的 Shinya Kasatani 對 Selenium 產生了興趣,他意識到他可以將核心程式碼包裝到 Firefox 瀏覽器中的 IDE 模組中,並能夠在同一個外掛程式中錄製和回放測試。這個工具後來證明在很多方面都令人大開眼界,因為它不受同源政策的約束。
Mike Williams 在 2006 年夏天再次參與進來,他領導了來自 ThoughtWorks 中國的團隊,主要成員包括 Wang Peng Chao、Huang Liang 和 Xiong Jie,並有其他人的協助。他們致力於改進 Selenium Core,目標是使其更接近 1.0 版本。
Google 也參與!
Jason Huggins 在 2007 年離開 Thoughtworks,並加入了 Google 內部(當時是秘密的)Selenium 支援團隊。
Jennifer Bevan(和其他未具名的 Google 員工)為 Selenium RC 編寫了他們自己的 grid 功能,並在內部部署,用於測試多個公開的 Web 應用程式。Google 在紐約舉辦了一場 GTAC 會議,並首次談論他們對 Selenium 的使用。Jennifer 很快就成為 Selenium 專案的提交者。
在芝加哥的 Haw-bin Chai 為 XPath 功能提供了修補程式,並開發了一個名為「UI Element」的擴充功能,使定位器的語法更簡單。他在 2007 年被邀請加入 Selenium 開發團隊。
在 ThoughtWorks 的 Simon Stewart 一直在開發一個不同的 Web 測試工具,名為 WebDriver。它不依賴 JavaScript 來進行繁重的工作,而是為每個瀏覽器都從頭開始編寫了一個客戶端。它還具有比 Selenium-RC 更「高階」的 API,並展現了很大的潛力。Simon 在 GTAC 上展示了這個工具,並開始研究與 Selenium-RC 的相容性,這導致了一個顯而易見的結論,即這兩個專案應該合併。Simon,在 2007 年到 2012 年在 Google 工作,現在在 Facebook 工作,他可以花一些時間將其變成現實。