Selenium 历史
故事始于 2004 年
故事始于 2004 年芝加哥的 ThoughtWorks,Jason Huggins 为内部时间和费用应用程序(Python,Plone)的测试构建了 Core 模式,名为“JavaScriptTestRunner”。鉴于这家咨询公司的敏捷精益,对任何应用程序的自动测试都是 ThoughtWork 风格的核心。他得到了 Paul Gross 和 Jie Tina Wang 的帮助。对他们来说,这是一份日常工作。
Jason 开始向各个同事演示测试工具。许多人对其即时直观的视觉反馈以及作为其他 Web 应用程序的可重复使用测试框架的增长潜力感到兴奋。
2004 年后不久,ThoughtWorker 的同事 Paul Hammant 观看了演示,并开始讨论 Selenium 的开源,以及定义 Selenium 的“驱动”模式,您可以在所选语言中通过网络使用 Selenium,这将解决“同源策略”。其他(当时的)同事 Aslak Hellesoy 和 Mike Melia 尝试了“服务器”部分的不同想法,包括重写页面以解决同源策略。Paul 用 Java 编写了原始服务器部分,Aslak 和 Obie Fernandez 将客户端驱动程序移植到 Ruby,为更多语言的驱动程序奠定了基础。
世界各地各个办公室的 ThoughtWorkers 为商业项目选择了 Selenium,并从这些项目中学到的经验中为 Selenium 做出了贡献。Mike Williams、Darrell Deboer 和 Darren Cotterill 都帮助提高了它的能力和稳健性。
与此同时,在 ThoughtWorks 之外...
在 Bea,Dan Fabulich 和 Nelson Sproul 得出结论,驱动程序/服务器到浏览器的架构不是最有用的或最灵活的,因此分叉了驱动程序编码器,并将其制作成一个独立的服务器,利用并捆绑了 MortBay 的 Jetty 作为 Web 代理。当代码合并回来时,它被称为“Selenium Remote Control”,旧的驱动代码行和功能被弃用。
帕特·莱特博迪同时参与了这项工作,他有一个商业想法,需要他辞去他的日常工作(Jive Software)。这个想法是“托管 QA”,它最终被移入了 Gomez 的服务线。帕特与丹和尼尔森合作,使 Selenium RC 稳定用于大规模部署。帕特私下为托管 QA 编写了一个网格,该网格截取了浏览器在各种状态下的屏幕截图,并同时照顾多个客户。杰森在一年之前也有同样的托管 QA 想法,但他没有辞去日常工作来做这件事。
2007 年,丹搬到了快速发展的 Redfin,它也兼职赞助他在 Selenium 上的时间,并鼓励演讲议程。
Selenium IDE:日本制造
日本的信谷真哉对 Selenium 产生了兴趣,并意识到他可以将核心代码封装到 Firefox 浏览器的 IDE 模块中,并且能够记录测试以及在同一插件中回放测试。这个工具以比最初想象的更多的方式开阔了眼界,因为它不受同源策略的约束。
迈克·威廉姆斯于 2006 年夏季再次参与其中,他领导了一个来自 ThoughtWorks China 的团队,主要是王鹏超、黄亮和熊杰,但在其他人的帮助下。他们致力于改进 Selenium Core,目标是使其更接近 1.0
谷歌也参与了!
杰森·哈金斯于 2007 年离开 Thoughtworks,加入了谷歌内部(当时保密)的 Selenium 支持团队。
詹妮弗·贝文(和其他未具名的谷歌员工)为 Selenium RC 编写了自己的网格功能,并在内部部署它来测试多个公共 Web 应用程序。谷歌在纽约举办了一场 GTAC 会议,并首次谈到了他们对 Selenium 的使用。詹妮弗很快成为 Selenium 项目的提交者。
芝加哥的 Haw-bin Chai 提供了 XPath 功能的补丁,并开发了一个名为“UI Element”的扩展,它使定位器的语法变得更加简单。他于 2007 年被邀请加入 Selenium 开发团队。
ThoughtWorks 的西蒙·斯图尔特一直在开发一种不同的 Web 测试工具,称为 WebDriver。它不依赖 JavaScript 来完成繁重的工作,而是为每个浏览器都有一个从头编写的客户端。它还具有比 Selenium-RC 更“高级别”的 API,并显示出很大的前景。西蒙在 GTAC 上展示了该工具,并开始与 Selenium-RC 兼容的工作,这得出了一个显而易见的结论,即这两个项目应该合并。西蒙于 2007 年至 2012 年在谷歌工作,现在在 Facebook 工作,他可以花一些时间让它成为现实。