1. Selenium 介绍

什么是 Selenium ?

在开始编写严肃的测试脚本并在浏览器上看到神奇的事物之前,让我们看一下 Selenium 的一般含义,以便我们可以根据需要有效地使用它。

Selenium 是用于自动化和测试 Web 应用的一组工具 。由于它不是单个工具,因此称为套件 。 我们有整篇文章专门介绍这些强大的工具,这些工具旨在满足不同的测试和测试环境要求。

为了更深入和更好地理解,请将 Selenium 视为网络浏览器的 API,即操纵其中的元素 。 更好的是,这就像您能够对 Firefox 或 Chrome 或 IE 等进行编程,以使重复的手动测试用例自动化。 您可能想知道如何定位和捕获所需的 Web 或 UI 元素,但是必须等待更长的时间才能解密!

BrainBell :大脑为我们提供了很多帮助! 当我们努力学习某些东西时,我们的大脑会通过确保学习不会持续进行来帮忙。 是的,难过,但真实。 它将使我们想起所有其他重要的事情,这些事情使您进行ALT + TAB或留出充足的空间。 因此,我们有必要欺骗我们的大脑,使他们认为生命取决于对 Selenium 及其世界的了解。 重复 (其中一种技巧,虽然有点无聊,但仍然如此)以不同的方式说同一件事,增加了将内容编码到大脑多个区域的机会。

那么,什么使这个世界在测试专业人士中变得更加流行和最受欢迎? 它是开源 的,因此是免费的,它使您能够在多个浏览器平台 上运行测试。

希望您现在同意这个世界是一个很酷的地方! 话虽如此,在另一篇文章中再见。

为什么要进行自动化测试?

自动测试 ”一词。 让我们看看它的含义以及我们为什么要真正关心它。 此外,为什么还要花费宝贵的时间和精力 创建自动化测试? ( 在这里告诉我一个秘密: 尽管我们使用一种工具来实现自动化,但是肯定要付出很大的努力。因此,只有在值得我们努力的情况下,我们才可以涉足这一领域!)

  • 内容 :自动测试是指借助工具自动执行手动过程以测试被测应用/系统的过程。
  • 原因 :在当今世界,由于高度互动,响应迅速且功能丰富的内容可以满足遍布全球的大量最终用户,因此编写的大多数软件应用都是以经济的代价基于 Web 的。 对质量的需求以及对上市时间和预算的竞争压力也急剧增加。 为了节省时间和金钱,增加测试覆盖范围,实现最佳质量并提高客户满意度,测试自动化已成为强制性要求!

何时 变得有利?

  1. 回归测试 – 想象一下,系统中已经创建了功能,并且已经过测试。 在稍后的某个时间点,有一些更改会影响现有代码或引入新功能。 因此,现有的已经测试过的零件可能无法按预期工作,或者更糟,发生故障。 如果这种情况在生产环境中发生,并且您的客户之一对此表示报错,那是什么条件? 您甚至可以想象发生这样的事情吗? 听起来令人恐惧吧? 为了您的急救,我们这里有 Selenium。 我们可以使用 Selenium 创建一个自动化测试的回归套件,并且每次引入更改或新功能时,都可以运行该套件,而无需进行任何额外的工作(在敏捷过程中,每个 sprint 结束时) 确保没有任何损坏。
  2. 高级测试 – 单元测试可用于测试单个组件(类级别),集成测试可用于测试事物在类间级别上的工作方式。 对于 Web 应用,最后的座右铭是找出浏览器是否按照客户希望的方式正常工作。 使用 Selenium,我们可以像用户/客户一样执行测试!
  3. 组合测试 – 让我们以一个包含三组,每组具有三个单选按钮的网页为例。 手动测试所有组合可能会花费大量时间,但是以编程方式可以轻松完成,并且无需人工干预即可在一夜之间进行测试。
  4. 明确要求 – 手动编写的测试步骤可能不明确。 一个测试人员可能会测试并声明它已通过,但另一个测试人员可能会说失败了。 自动化测试具有非常确定的结果。 因此,无论开发人员是谁,都对开发人员和您的应用提出了确切的要求。 它或者通过或者失败。 而已!
  5. 可以在某些测试框架的帮助下生成自定义报告 和屏幕截图,当开发人员或其他项目涉众期望快速反馈时,这将非常有用。
  6. 一旦安装了测试脚本并设置了测试环境,就可以执行任意数量的测试执行迭代
  7. 可以执行这些自动测试的速度 非常高。 因此,在频繁发布的情况下,自动化成为一个很好的解决方案。
  8. 当需要并行执行时,自动化是可取的。
  9. 由于避免了人为错误(可能随着时间的推移而使重复任务变得无聊而导致的错误),因此准确性 和质量得以提高。

哪个 可能是基于 Web 的自动化中使用最广泛的开源解决方案? – 拜托,显然是 Selenium !有了这些知识,在另一篇文章中再见,以了解 Selenium 的历史。

Selenium 的历史

在 2004 年,有一个来自芝加哥 ThoughtWorks 的人叫 Jason Huggins。 他将 Selenium核心 模式构建为“JavaScriptTestRunner”,以验证他正在测试的 Web 应用,时间和费用应用的行为。 他以一种人们可以使用 HTML 文件中的关键字驱动方法编写测试的方式来构建它。慢慢地,他开始向大量受众展示他的工具的演示。 不久,人们开始讨论将该工具开源,并使其成为可重用的框架,以使其他此类基于 Web 的应用自动化。 这就是 Selenium 核心的故事。

不过,Core 还是有一些限制,例如“原产地政策”。 好的大字警报! 首先,让我们了解一下原点是什么。

来源不过是 URL 的方案,主机和端口。 因此,根据该策略,由于主机不同,因此不允许尝试访问从 http://abc.org/sample.html 检索的文档的 DOM 来检索文档。 另一个示例,我从 http://example.com/(端口:80)启动了一个 JavaScript 程序,由于端口不同,根据此策略,https://example.com(端口:443)变得不可访问。

现在,又有一个来自 ThoughtWorks 的名叫 Paul Hammant 的人通过提出 Selenium 1Selenium RC (远程控制)来规避此限制。 它具有一个 Selenium 客户端和一个 Selenium 服务器。 客户端将命令发送到服务器,并且该服务器将使用 JavaScript 驱动浏览器。 因此,它不会直接挂钩到任何浏览器 API。 它还支持多种编程语言,我们将在后面详细介绍。

现在到下一个! Selenium IDE 不仅是最简单,最简单的工具,而且是在 Selenium Suite 中提供最少自动化编程脚本所需的最少编程知识的唯一工具。 我知道您会很想知道谁提出了这个宝石。 顺便说一下,这是“日本制造”的产品。 开发此工具的功劳归功于 Shinya Kasatani。 他是意识到 Selenium Core 代码可以包装到 IDE(集成开发环境)模块中并可以插入 Firefox 浏览器的人。 它具有记录和播放功能,比您期望的要酷! 让我们将其保存以备后用。

在 2007 年前后,ThoughtWorks 的另一个名叫 Simon Stewart 的人正在开发另一个名为 WebDriver 的 Web 测试工具,该工具不依赖 JavaScript。 与 Selenium RC 相比,它不仅为每个浏览器都有一个客户端,而且还有一个“更高级别”的 API。 这两个项目合并了,现在我们有了新的 Selenium 或 Selenium 2 。啊哈,所以结论是:

  • Selenium RC = Selenium 1
  • Selenium 与 WebDriver 合并 = Selenium 2