承前启后

1.5万 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
对web自动化测试感兴趣的学生或在职人员,对Selenium IDE工具感兴趣的学生或在职人员。
你将会学到
通过课程的学习,希望大家能够具备以下能力:1. 能够设计自动化测试的测试案例2. 能够制作自动化测试脚本3. 能够调试自动化测试脚本4. 学习Selenium IDE工具的用法5. 学习自动化测试的工作流程。
课程简介

课程分:上,中,下三篇,本课程为下篇。课程资料地址是: https://github.com/wangding/courses/tree/master/seleniumIDE

上篇对自动化测试的基础知识做一些交代,为真正做自动化测试做好铺垫,然后讲解 IDE 工具的基本用法,学完了可以录制简单的自动化测试脚本。

中篇和下篇会介绍很多技术细节。基本上中篇会把最常用到的技术细节都讲到。这样上篇和中篇的内容可以应付 80% 网站的自动化测试任务了。

下篇有些高级话题,不是每个人都会用到的,适合骨灰级玩家。

以下是本课程的主要内容:

课时1:承前启后

首先,给大家分享了一些有趣,好玩的学习资料,帮助大家补充  web 前端的技术欠缺。其次,强调了 Selenium IDE web 自动化测试的水平和能力,一是对 Selenium IDE 命令的学习,另一个是对 web 应用的原理或者实现的技术的学习,最后一个就是对被测网站业务或功能的了解,对测试案例的设计。这些是我们学习的方向和重点。当然,本课程还是主要围绕 Selenium IDE 本身的技术来展开,下篇课程中会继续讲解一些深入的技术细节。最后,给出下篇课程的大纲,分三个板块六个重要的话题,分别是 wait 相关命令,弹窗处理,文本模式,JavaScript 参数,流程控制和 DDT(数据驱动测试)。

课时2:wait 相关命令

首先,介绍了 andWait 后缀的命令。1. 普通命令(如常见的 click 命令)与 AndWait 后缀命令的区别是,普通命令会执行动作,并以最快的速度继续执行下面的命令,而 AndWait 后缀命令(如 clickAndWait 命令)告诉 Selenium 在动作完成后等待页面加载完成。2. AndWait 后缀命令经常用在浏览器导航到另一个页面或重新加载当前页面时。3. 请注意,如果在某个动作上使用一个 AndWait 命令,如果不触发导航或者刷新,您的测试将会失败。这是因为 Selenium 达到了 AndWait 超时上限,却没有看到任何导航或刷新,导致 Selenium 抛出超时异常。其次,讲解了 waitFor 前缀的命令。1. 在 AJAX 驱动的 web 应用程序中,应用程序从服务器检索数据,而无需刷新整个页面。andWait 命令在页面没有真正刷新前不会工作。2. 让当前运行的测试暂停一段时间也不是一个好方法,因为被测的 web 元素可能比预定的暂停时间出现的略晚或稍早,这主要取决于系统的响应能力,负载大小或其他不可控因素,这些都会导致测试失败。较好的方法就是在一个动态的时长内等待所需的元素,一旦找到界面元素,继续执行测试。3. waitFor 命令实现了上述功能,waitForElementPresent 或 waitForVisible,这些命令会动态的等待,每隔一秒会检查所需的条件,一旦条件满足则继续执行脚本中的下一个命令

课时3:JavaScript 弹窗

首先,讲解了上次课程的手机归属地查询自动化脚本中的两个问题,一、如何确认脚本运行结果日志中的验证失败为 bug,二、如何增量开发自动化测试脚本。其次,讲解了 JavaScript 弹窗的三种类型,以及处理弹窗常用的 Selenium 相关命令。最后,通过示例页面录制了 Alert 弹窗的自动化测试脚本。

课时4:确认和提示弹窗

首先,演示并录制了确认弹窗的自动化测试脚本,并在脚本的录制以及回放过程中,讲解了一些关键技术点。其次,演示并录制了提示弹窗的自动化测试脚本,并在脚本的录制以及回放过程中,讲解了一些关键技术点。

课时5:Globbing 文本模式

首先,讲解了文本模式的本质,文本模式使用特殊字符来模糊匹配预期的文本,而不必准确的描述该文本。这样的好处是增强我们脚本的健壮性,减少自动化测试脚本的修改机会。其次,强调了 LinkText 定位器可使用文本模式。因为,LinkText 本身是 locator 参数的一种,参数类型是 locator,我们可能知道 pattern 参数类型可以使用文本模式,其实 LinkText 也是支持文本模式的。最后,讲解了三种文本模式:Globbing 模式,正则表达式和 exact,其中的 Globbing 模式的特殊字符语法,标记,等细节。通过时间校准网站的案例,讲解了 Globbing 模式的使用。

课时6:正则表达式文本模式

首先,讲解了正则表达式的语法,特殊字符的用途以及 regexp: 和 regexpi: 两个标记。其次,通过时间校准网站的案例,制作了正则表达式文本模式的测试案例。通过案例,揭示了文本中编码规律的强弱,以及方案中的模式固有的缺陷,只有数字位数的规则,没有更深入的业务规则。最后,讲解了 exact 文本模式的使用场合和用法。Selenium 的 exact 文本模式只有非常少的使用场合。这种文本模式没有什么特殊字符,所以顾名思义称为准确模式。所以,当你需要匹配一个包含星号的文本时,globbing 和正则表达式都是用星号作为特殊字符,这时 exact 文本模式就派上用场了。实际上正则表达式文本模式通过转义星号可以实现同样的效果。

课时7:JavaScript 参数

首先,讲解了 JavaScript 参数的两种类型:显示  JavaScript 参数和隐式 JavaScript 参数,其中的显示  JavaScript 参数。测试用例中的所有变量被存储在 JavaScript 关联数组中。关联数组用字符串来索引而不是用连续的数字索引。存放测试案例变量的关联数组的变量名是 storedVars。当你想在 JavaScript 代码片段中访问或操作变量时,你需要通过  storedVars['yourVariableName'] 来访问。其次,讲解了更为强大的隐式 JavaScript 参数。JavaScript 脚本还可以用于生成参数的值,即使没有指定参数是 script 脚本类型。而且几乎可以用在任何参数上,这是重点(见参数化定位器参数的脚本)。在这种情况下,通过使用特殊的语法,即整个参数值由 javascript 做前缀,在花括号中放置代码片段,例如:javascript{*这里是你的代码*}。最后,通过求和计算的案例,演示了显示 JavaScript 参数和隐式 JavaScript 参数的用法,以及 runScript 命令的用法。

课时8:定位器参数化

通过 hostedredmine 登录的案例,演示了用  JavaScript 隐式参数来替代定位器参数的用法。通过这种方式,可以实现定位器参数化,这样可以降低自动化脚本维护的成本。

课时9:用户自定义扩展

通过时间日期网的案例,首先,提示了捕获页面截图的命令用法。由此,提出问题,希望文件名,在每次运行脚本的时候,能够改变并且唯一,避免捕获的图片文件覆盖之前的文件。改进方案里用 JavaScript 隐式参数,实现了用时间参数拼凑出字符串作为文件名,进行文件捕获。最后,为了让自动化脚本更简洁美观,更易维护,自定义了  JavaScript 函数 fileName ,并将 js 脚本文件作为 Selenium IDE 用户扩展进行了设置。在脚本中调用 fileName 函数,优秀的解决了问题。

课时10:控制流程

首先,讲解了三种流程控制方案:1. 使用 Selenium Web Driver  运行脚本结合客户端库,如:Java 或 PHP 库,利用编程语言的流程控制功能。2. 用 storeEval 命令从脚本中运行一个小的 JavaScript 代码片段。3. 安装 Selenium IDE: Flow Control 扩展。并对三种方案做了比较,最终选择了第三个方案,给出流程控制扩展插件安装的方法和地址。其次,讲解了流程控制插件增加了流程控制命令。最后,通过一个简单的案例,演示了判断分支和循环的流程控制。

课时11:百度登录判断流程控制

本测试案例完成以下的操作:首先,判断百度首页的登录状态。其次,如果登录,则退出登录。最后,如果没有登录,直接将百度首页的信息存放到变量中,再用 echo 命令打印变量信息。这个相对实际的案例,演示了流程控制命令的用法,以及分析问题,解决问题的思路和方法。

课时12:数据驱动测试之 JS 数据文件

首先,讲解了 DDT:Data Driven Test 的思想。给出了 Selenium IDE  支持的三种数据方案,分别是:JS 数据文件、CSV  数据文件和 XML 数据文件。并且给出了每种数据文件下面实现 DDT 的讲解框架,分别是:扩展项、Options 设置、数据格式、相关命令和案例。其次,讲解了 js 数据格式的 DDT 的技术细节:1. 要求 .js 文件中按下面的方式存放测试数据

                     varname = "value"

2. 安装配置 Options 选项,需要把 .js 数据文件,在 Options 对话框中进行设置。最后,讲解了百度搜索案例的 DDT 之 JS 数据文件的实现。


课时13:数据驱动测试之 CVS 数据格式

首先,介绍了 CSV 数据文件的数据格式是逗号分隔的方式,每一行代表一条记录,逗号分隔代表不同的列。需要安装加载项:CSVRead_Selenium-IDE.js,并且在 Options  对话框中设置到 Selenium Core  Extensions 项上。其次,演示制作了 hostedredmine 网站登录的 csv 数据文件,并演示制作了 hostedredmine 网站登录的自动化测试脚本,涉及到 CVS 数据文件的读取命令:readCSV、storeCVSValue 命令。

课时14:数据驱动测试之 XML 数据文件

DDT 之 XML 数据文件需要按顺序使用下面三个 js 扩展,实现对 XML 数据文件载入和读取操作:user-extensions.js,goto_sel_ide.js 和  datadriven.js。XML 数据文件格式如下所示:

                           

通过学生学习时长统计的案例来演示了 XML 数据文件的 DDT 脚本的制作过程。


课时15:新的起点

首先,讲解了 DDT 数据驱动测试的循环控制流程的增量开发的思路。然后讲解了如何定计划任务自动运行测试案例脚本。其次,强调了除了技术细节,整个自动化测试流程的重要性。最后,给出了下一步的发展,就是全代码级别的自动化测试,并通过百度搜索的自动化脚本导出成 python 自动化测试脚本,再一次体现了 Selenium IDE 功能的强大之处。

展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交