[跟着官方文档学Selenium][学习笔记][一][Selenium介绍]
前言
Selenium是支持Web浏览器自动化的一系列工具和库的综合项目,是当今软件测试中必须掌握的技能之一。
Selenium的历史
The story starts in 2004
在2004年芝加哥的ThoughtWorks公司,Jason Huggins构建了一个核心模式名为"JavaScriptTestRunner",用来测试internal Time和Expense application(Python, Plone)。考虑到该咨询公司的敏捷倾向,任何应用程序的自动测试都是ThoughtWork风格的核心。他从Paul Gross和Jie Tina Wang得到了帮助,对他们来说,这是一份日常工作。
Jason开始向不同的同事演示测试工具。许多人对其即时直观的视觉反馈以及作为其他web应用程序的可重用测试框架的发展潜力感到兴奋。
2004年,Paul Hammant看到这个演示后开始讨论Selenium的开源,以及定义一种"驱动"模式,在这种模式下,你可以通过自己选择的语言使用Selenium,这将绕过同源政策。其他(当时)同事Aslak Hellesoy和Mike Melia对"服务器"部分尝试了不同想法,包括重写页面及绕过同源策略。Paul用Java写了原始服务器,Aslak和Obie Fernandez将客户端驱动程序移植到Ruby,为更多语言的驱动程序提供了基础。
ThoughtWorker在世界各地不同办公室的人为商业项目学习Selenium,并从这些项目中吸取经验教训中为Selenium做出了贡献。Mike Williams,Darrell Deboer和Darren Cotterill都帮助提高了Selenium的能力和健壮性。
Meanwhile, outside of ThoughtWorks
在Bea,Dan Fabulich和Nelson Sproul得出的结论是,驱动程序/服务器到浏览器的体系结构不是最有用或最灵活的,因此将驱动程序编码器分叉,并将其制作成一个独立的服务器,利用并捆绑MortBay的Jetty作为web代理。当代码被合并回来时,它被称为“Selenium Remote Control”,旧的驱动代码线和功能被废弃。
Pat Lightbody同时参与了一项商业计划,这要求他辞去日常的工作(Jive)。这个想法就是"Hosted QA",最终被转移到Gomez的服务线线。Pat和Dan与Nelson合作,使SeleniumRC能够在大规模部署中保持稳定。Pat曾私底下为Hosted QA编写了一个grid,拍摄了各州浏览器的截图,并同时照顾多个用户。Jason一年前也有同样想法,但他没有辞去日常工作去做。
在2007年,Dan搬到了快速发展的Redfin,并成为Selenium的赞助商。
Selenium IDE: Made in Japan
在日本的Shinya Kasatani对Selenium产生了兴趣,并意识到他可以将核心代码封装到Firefox的IDE模块中,并能够在同一个插件中记录测试和回放测试。这工具在多方面都令人大开眼界,因为它不受同源政策的约束。
2006年的夏天,Mikes Williams再次参与到项目中,他领导了一个ThoughWorks的中国团队,主要是Wang Peng Chao,Huang Liang和Xiong Jie,但也得到了其他人的帮助。他们致力于改进Selenium Core,目标是使其更接近1.0版本。
Google Too!
Jason Huggins在2007年离开了ThoughtWorks并加入了(当时是秘密的)谷歌的Selenium支持团队。
Jennifer Bevan(和其他未具名的谷歌用户)为Selenium RC编写了自己的Grid功能,并在内部部署该功能,用于测试多个公共web应用程序。谷歌在纽约主办了一个GTAC会议,并首次讨论了他们对Selenium的使用。詹妮弗很快成为Selenium项目的提交人。
芝加哥的Haw-bin Chai为XPath功能提供了补丁,并开发了一个名为"UI元素"的拓展,使Locators的语法更加简单。2007年,他受邀加入Selenium开发团队。
ThoughtWorks的Simon Stewart一直在开发另一种名为WebDriver的网络测试工具。它不需要依赖JavaScript来完成繁重的工作,而是为每个浏览器提供了一个从头开始编写的客户端。它还有一个比"Selenium-RC"更改级别的API并展示了很多前景。Simon在GTAC上展示了该工具,并开始研究与Selenium RC的兼容性,这得出一个明显的结论-这两个项目即将合并。Simon从2007年到2012年在谷歌工作,现在在Facebook工作。
Selenium的生态
Selenium支持的浏览器驱动
- Mozilla GeckoDriver
- Microsoft EdgeDriver
- Google ChromeDriver
- Opera ChromiumDriver
- Apple SafariDriver\
语言绑定
名字 | 语言 | 作者 |
---|---|---|
Selenium | Go | Miki Tebeka |
hs-webdriver | Haskell | Adam Curtis |
wd | JavaScript | Adam Christian |
Selenium-Remote-Driver | Perl | George S. Baugh |
php-webdriver | PHP | Facebook & Community |
RSelenium | R | rOpenSci |
webdriver.dart | Dart |
框架
编程语言通过Selenium驱动程序支持。这些库是用各种语言编写的,命令是来自于Selenium的原生API的方法/函数。
Selenium经常被用于自动化测试Web应用,但它并不包括测试框架。下面列出了一些可以使用Selenium测试的测试框架。
名字 | 语言 | 作者 |
---|---|---|
Capybara | Ruby | Thomas Walpole |
CodeceptJS | JavaScript | Michael Bodnarchuk |
FluentLenium | Java | FluentLenium |
Helium | Python | Michael Herrmann |
Nerodia | Python | Lucas Tierney |
QAF | Java | Chirag Jayswal |
Selenide | Java | Selenide |
SeleniumBase | Python | Michael Mintz |
Watir | Ruby | Titus Fortner |
WebdriverIO | JavaScript | Christian Bromann |
Nightwatch.js | JavaScript | Andrei Rusu |
Selenium三大件
Selenium WebDriver
如果你想创建强大的,基于浏览器的回归自动化套件和测试,在许多不同环境中拓展和分发脚本,那么你就需要Selenium WebDriver。
Selenium IDE
如果要创建快速错误再现脚本,请创建脚本以帮助进行自动化辅助的探索性测试,那么您需要使用Selenium IDE
Selenium Grid
如果您想通过在多台计算机上分发和运行测试来扩展,并从一个中心点管理多个环境,从而可以轻松地针对各种浏览器/ OS组合运行测试,那么您需要使用Selenium Grid。
- 点赞
- 收藏
- 关注作者
评论(0)