[跟着官方文档学Selenium][学习笔记][一][Selenium介绍]

举报
John2021 发表于 2022/03/29 22:20:32 2022/03/29
【摘要】 前言Selenium是支持Web浏览器自动化的一系列工具和库的综合项目,是当今软件测试中必须掌握的技能之一。 Selenium的历史 The story starts in 2004在2004年芝加哥的ThoughtWorks公司,Jason Huggins构建了一个核心模式名为"JavaScriptTestRunner",用来测试internal Time和Expense applica...

前言

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 Google

框架

编程语言通过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。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。