http://newtours.demoaut.com/ 这个网站将会用来作为我们测试的网址。

通过录制来创建一个脚本

让我们来用最普遍的方法——录制来创建一个脚本。然后,我们将会用回放的功能来执行录制的脚本。

第一步

第二步

  • 在Firefox,访问该网址。 Firefox会加载该页面。

第三步

  • 在网页的空白处右击鼠标,打开菜单栏。
  • 显示所有可用的命令(Show all available Commands)>assertTitle exact:Welcome: Mercury Tours

然后编辑器面板就出来了两条命令。如下图。

第四步

  • 在"用户名(user name)"的文本框内输入"invalidUN"。
  • 在"密码(password)"的文本框内输入"invalidPW"。

两个命令会添加进来

 第五步

点Sign-In按钮,Firefox会跳转到新的页面。

第六步

按"录制按钮",使之处于弹出状态以停止录制。

第七步

这就录制好了,随后我们点文件菜单,选择"保存测试用例(Save Test Case)"。当然,你可以使用快捷的 Ctrl+S。

第八步

  • 选择你要存放的地方,并给它起个名字 "Invalid_login"。
  • 点保存

第九步

这个case保存成了HTML格式。

第十步

回到Selenium IDE里,点回放按钮,执行整个脚本。 Selenium IDE会准确无误地把刚才的脚本跑一遍。

如果人一直做自己不喜欢的事情,那怎么会开心起来呢?你觉得累是因为你觉得不开心,你不开心是你骗不了自己的心。明天再写。今天写了三分之一了。果然我就学习那么一会儿就不想学习了。这是不可以的。所以我继续学习了。回家好好玩,在这好好学。

Selenium 命令介绍 — Selenese

Selenese命令最多两个参数:target和value(目标和值)

有的参数是不必要的。具体的看命令需要几个参数。

看所有的Selenese 命令,点击这里

三种命令

动作类

这些是直接跟页面上元素打交道的命令。

比如“单击(click)”是一个模仿用户点击行为的命令。“输入(type)”是模仿用户向文本框中输入文字的命令,文本框中会显示你的输入。这是一个双向的命令。

访问类

访问类命令允许我们存储变量的值。

比如:“存储标题(storeTitle)”命令完成了读取页面标题并存入一个变量中的任务。这个命令跟页面上元素并无交互。

断言类

用来判断是否符合判定条件

三种类型的断言

  • Assert. 当一个assert命令执行失败,这个测试立即停止。
  • Verify. 当一个verify命令失败了,不直接停止,只是跟预期不同,IDE的日志会记录下这个failure,测试会继续。
  • WaitFor. 在执行下一条命令执行,"waitFor" 会先等某个判定条件满足后再执行下一条
  • 如果在预期的时间内,条件满足,这步就算通过了。
  • 如果条件在预期时间内没有满足,那么这步就失败了。日志会记录这个失败,并且测试执行下一条。
  • 默认情况下超时时间是30秒。可以在选项对话框中的General栏里改变等待时间。

Assert和Verify比较

常用的命令

命令名称

命令参数个数

解释

open

0 - 2

根据URL打开一个页面。

click/clickAndWait

1

点击一个元素。

type/typeKeys

2

输入一串字符。

verifyTitle/assertTitle

1

比较实际的标题和期待的结果是否一致。

verifyTextPresent

1

检查是否某个预期的值在页面上出现了。

verifyElementPresent

1

检查页面是有某个元素。

verifyTable

2

比较表格里的内容和预期值。

waitForPageToLoad

1

等页面全部加载好了再继续执行。

waitForElementPresent

1

等页面上某个元素出现后再继续执行。

用firebug手动创建一个脚本

上一个是你操作一遍,IDE记录下来你做了哪些操作,并生成一条条命令。这次要自己输入所有命令。用Firebug。

第一步

先把录制的按钮松开,那个红的。

第二步

点编辑器里面最上面空行的部分。

输入open在command(命令)框并按回车。

第三步

  • 打开Firefox,访问http://newtours.demoaut.com/, 打开firebug
  • 在IDE 编辑器面板,选择第二行的位置,输入命令"assertTitle"。
  • 使之自动完成命令。

第四步

在Firebug中,展开<head>标签来看<title>标签

点击<title>标签,复制里面的值然后把值粘贴到Target框框里(assertTitle)在Selenium IDE中。

第五步

  • 创建第三条命令。点击第三个空白的行,在命令输入框输入“type”。
  • 在Firebug中,点“inspect”按钮。
  • 在网页中点击USER NAME的文本框。而Firebug会自动找到文本框对应的html元素。

第六步

我们发现User Name没有ID,但是有一个Name属性。因此我们可以通过NAME来定位它。

复制NAME 的值,并且粘贴到IDE中的Target框里。

在Target框里,在userName前面加上“name=”,来告诉IDE应该通过NAME属性来找一个值为userName的元素。

同理,输入type,来为password输入值。

第八步

第四条命令,在command里输入"clickAndWait"。

然后鼠标inspect Sign-in这个按钮。复制其中name属性的值,贴在target中。

第九步

跟前面一样,保存测试case。

使用“查找(find)”按钮

IDE中的查找按钮用来帮我们确认按照我们的限制条件,能否找到正确的UI 元素。

让我们用之前创建的 Invalid_login case来看看如何使用。点击一下第三个命令。

然后点击查找,网页上的对应元素会标黄。highlight。

这说明了IDE是可以检测和正确找到该元素的。如果“find”按钮高亮了其他元素,或是根本没有找到元素,那么说明你脚本出了问题。

执行命令

你可以不执行整个脚本,而去执行某一条命令。点击你想执行的命令所在行,点击菜单栏“Actions>Execute this command”或者使用快捷键X。

第一步

确认你的浏览器打开了要测试的网站。点击你想执行的命令。在这里,我们点击 type|userName|invalidUN"

第二步

按键“x”

第三步

我们看到主页上用户名的文本框里出现“invalidUN”

这样执行命令是否成功跟当前页面显示什么有很大关系。也就是说,你在google的主页执行这个,命令会因为找不到目标元素而使得整个case挂掉。

设置起始点

起始点告诉了IDE下次执行从哪条命令开始。它的快捷键是S(start)。

在每个测试脚本中,只能有一个起始点。起始点跟单步执行类似,很依赖当前页面的显示内容。页面如果没有起始点涉及的元素,那么case还是会挂。

设置断点

断点标识了IDE在执行脚本过程中会在哪里自动停下。快捷键是“B”。

黄色高亮的语句表示在当前步等待。IDE在当前步暂停执行case。在单个的测试脚本中可以有多个断点。

步进

这个命令使我们在断点后继续单步执行case。让我们看断点中的例子。

点“step”前case在断点处暂停了。

点击“step”后,IDE会执行断点所在行的语句,并在下一行停下了。

记住,step命令每次执行一句,不管那行有没有断点。这也是step命令的优点,每执行完一条命令,让我们可以观察它的执行结果。

在代码试图下使用其他格式时的注意事项

Selenium IDE只适应HTML,其他的格式还处于试验阶段,并不稳定。所以并不建议在代码视图中以HTML格式以外的语言来创建或者编辑测试用例。下面是一些bug。因为我们已经不用1.9.1的,bug略。

建议我们使用菜单中的"导出为”命令来转换格式,而不是直接在代码视图里操作。

总结

终于等到你,还好我没放弃。。。

醉了,看这点东西我活活拖了多久,懒癌晚期。。。好多条。。。

  • 测试脚本可以通过录制生成,或者手动输入命令,传入参数。
  • 在手动写测试脚本的时候,可以用firebug去定位元素。
  • 查找按钮用了检查命令是否可以找到正确的元素。
  • 表格视图以表格形式展示测试脚本,代码视图是以HTML格式显示case的。
  • 在代码视图里,以HTML之外的语言格式显示的功能并不是很好用。
  • 别在代码试图里以其他语言修改脚本。可以用导出命令代替。
  • 参数有时候并不是必需的,取决于命令的具体要求。
  • 有三种命令 Action 直接操作元素/Accessors读取元素属性并保存进一个变量/Assertions 比较实际值和预期值
  • Assertions也有三种类型,Assert不等就是错误的,立刻终止执行/Verify不等也还继续执行其他的/WaitFor等timeout前,某个特定条件满足,timeout了,还不满足,挂。
  • 最常用的命令有:open, click/clickAndWait,type/typeKeys, verifyTitle/assertTitle, verifyTextPresent, verifyElementPresent, verifyTable, waitForPageToLoad, waitForElementPresent

终于翻译完了。

【Selenium】4.创建你的第一个Selenium IDE脚本的更多相关文章

  1. Selenium私房菜系列5 -- 第一个Selenium RC测试案例

    <Selenium简介>中讲过,Selenium RC支持多种语言编写测试案例,如:C#,Python.在工作中,我倾向于是用Python这类动态语言编写测试案例,因为这样的测试案例无需编 ...

  2. 根据业务摸索出的一个selenium代码模版(python)

    前言 总算入行上班几个月了,不得不说业务是真的不消停啊.. 本人工作上经常遇到一种场景:为甲方做自动化接口处理工具,登录需要短信验证码,, 嘛算是摸索出了一套selenium代码模板,主要解决如下痛点 ...

  3. Selenium WebDriver原理(二):Selenium是如何操纵浏览器的?

    前言 上一篇文章<selenium webdriver 是怎么运行的>用了一个简单的例子--搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深 ...

  4. Selenium 开源书(一): Selenium历史

    Selenium历史 Selenium最初由Jason Huggins于2004年开发,作为ThoughtWorks的内部工具.Huggins后来加入了ThoughtWorks的其他程序员和测试人员, ...

  5. Selenium私房菜系列7 -- 玩转Selenium Server

    本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令“jav ...

  6. 《Selenium自动化测试实战:基于Python》之 Selenium IDE插件的安装与使用

    第3章  Selenium IDE插件的安装与使用 京东:https://item.jd.com/13123910.html 当当:http://product.dangdang.com/292045 ...

  7. python+selenium自动化软件测试(第6章):selenium phantomjs页面解析使用

    我们都知道Selenium是一个Web的自动化测试工具,可以在多平台下操作多种浏览器进行各种动作,比如运行浏览器,访问页面,点击按钮,提交表单,浏览器窗口调整,鼠标右键和拖放动作,下拉框和对话框处理等 ...

  8. pycharm+selenium搭建环境之no module named 'selenium'异常解决

    在pycharm上搭建python+selenium自动化测试环境时,遇到一个很坑的问题:no moduel named 'selenium' 如下图: 解决方法: 1.查看你的python是否正确安 ...

  9. Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

    前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢?? 一.Selenium RC的组成: 关于这个问题,我拿了官网上的一 ...

随机推荐

  1. 【Poj】 p2342 Anniversary party(树形DP第一道)

    Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5523   Accepted: 3169 ...

  2. JAVA_用Java来获取访问者真实的IP地址

    在jsp里,获取客户端的ip地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  3. GridView合并表头、多重表头(转)

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) ...

  4. 一键搞定JavaEE应用,JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0.9版

    本文转载自[http://www.blogjava.net/huliqing/archive/2009/01/09/247375.html] 这是一个集成了jre,tomcat,mysql的绿色运行环 ...

  5. github提交失败并报错java.io.IOException: Authentication failed:

    一.概述 我最近在写一个android的项目. 软件:android studio.Android studio VCS integration(插件) Android studio VCS inte ...

  6. 三种线程不安全现象描述(escaped state以及hidden mutable state)

    hidden mutable state和escaped state是两种线程不安全问题:两者原因不同,前者主要是由于类成员变量中含有其他对象的引用,而这个引用是immutable的:后者是成员方法的 ...

  7. Linux_scp命令

    一.简单概念  scp是有Security的文件copy , 基于ssh登录 二.使用 1. 发送(本地--->远程服务器) [liuwl@hadoop09-linux-02 hadoop-2. ...

  8. mysql语句 索引操作

    创建索引:(help create index;) CREATE INDEX indexName ON tableName(Coll,Coll....); ALTER TABLE tableName ...

  9. 使用Apache Bench进行压力测试

    Apache Bench是Apache中自带的压力测试工具 在linux中我们安装好apache后可以通过ab指令使用它 格式:ab [参数] [http://]ip地址/path/ 常用参数说明: ...

  10. WordPress的body_class()函数详解

    wordpress的body_class()函数,顾名思义,这个函数根据不同的页面类型为body标签生成class选择器,从而让设计人员可以各方便灵活的控制不同页面中的各个元素.本文对这一函数进行了详 ...