
Web 测试是软件测试里面相对比较重要的一部分, 如果想要实现 Web 自动化测试, 那就必须要求测试人员具备精通自动化测试工具以及编程语言的能力。接下来需要对免费且开源的 Web 测试工具做一个介绍, 同时也要介绍一下目前流行的编程语言相关的内容, 重点在于围绕自动化测试的基本原理, 详细阐述页面元素的常见定位方式, 以及如何具体对页面元素执行操作这两个方面的内容。结合实际工作的具体情况, 对自动化测试的基本流程展开深入分析, 其基本流程具体涵盖以下步骤: 首先是分析测试需求, 其次是编写测试用例, 接着是搭建测试环境, 然后是创建测试脚本, 随后是执行测试, 最后一步是对测试结果进行分析。在完成任务之后, 还对自动化测试的实际开展情况进行全面总结并进行展望, 从而为在后续时间里更加顺利、有效地开展测试相关工作打下坚实基础。自动化测试这一步骤和手工测试的情况是有相似之处。它同样需要提前去制定好测试计划, 接着要根据软件的需求规格说明书来分析清楚具体的测试需求。在方法的选择上, 可以运用黑盒或者白盒这些方式来设计对应的测试用例。当把测试环境搭建到位之后, 就需要使用相关的编程语言来编写用于自动化的脚本程序。后续需要执行这些测试操作, 并且对发现的缺陷情况等进行记录。另外还需要特别注意一点, 就是在正式去执行自动化脚本之前, 必须先把手工测试做完, 这样做是为了打下更扎实的基础, 从而能够更好发现其中存在的缺陷问题。关于自动化测试技术, 其中涉及的第一项内容为第一小节, 具体名称是测试工具。鉴于被测软件在类型方面的不同, 我们可以据此选择相适应的测试工具。当我们在面对桌面应用程序的时候, 市场上那些主流的测试工具包括有utf还有auto等而要是说我们测试的对象是web系统, 那么这里提到的这种工具就变成了一种非常适合的优良选择。是一款免费、开源的分布式的自动化测试工具对商业用户也没有任何限制支持多种平台可以在 、Linux、Mac 和 等多种操作系统上运行支持多种浏览器包括 IE、、、Opera、 等使用方便支持脚本录制可以将测试用例分布到不同的测试机器上执行支持多种语言包括C、Java、Ruby、、C#等。1.语言它是一门优雅的语言, 同时也是健壮的语言。它继承了传统编译语言的强大性。它继承了传统编译语言的通用性。它还借鉴了简单脚本的易用性。它还借鉴了解释语言的高效。它的代码非常简洁。它的代码体积很小。它是开源的。它能跨平台运行。它是面向对象的。它具有良好的扩展性。正因为这些优点。它被应用到数据分析领域。它被应用到数据处理领域。它被应用于网络爬虫开发。它被用于Web应用开发。它被人工智能所采用。自动化测试中也能看到它的身影。在自动化测试领域, 你可以用那个标准库来搞自动化测试框架, 也可以拿像 Robot 这种别的工具来干活。这玩意儿扩展得很强, 它支持关键字驱动的办法, 不管是测各种客户端还是接口, 它都能一边搞定, 还能搞分布式测试执行那块儿的事。2 网页元素定位自动化功能测试这个工具能够模拟人类去操作网页, 所以想要实现对页面上那些元素的动作, 就必须准确地找到这些页面元素在哪里。通常我们用来定位Web页面元素的属性有好多种, 其中包括id、name、class name、link text、XPath以及CSS等等。接下来我们将着重介绍其中最为常用的四种方法。2.我们是通过id属性来进行定位操作的。要是那个 Web 页面上的 id 不是动态生成的, 那么在一个页面里, 这个 id 值就是唯一的一个了。这个方法, 它是通过去找那个 Web 页面上的元素 id 的值, 来把那一个元素给抓出来的。可是, 如果遇到了那些 Web 元素的 id 是被动态分配的情况, 这种方法就派不上用场了, 不能用。比如说, 百度首页搜索栏的代码样子就是这样子的:通过仔细观察, 可以很轻易地发现它的 id 属性是“kw”, 那么我们就可以使用这个 id 来进行元素定位。这表示我们正在创建的那个对象, 具体的代码形式如下:等于是用括号把“kw”括起来。2.第2步利用link text这个属性来进行定位。当人们访问网页时, 我们能够通过超链接的方式, 把页面链接到下层的网页或者是其他网站。我们可以通过查找网页里的那个 link text 属性, 然后模拟对链接文本的单击操作, 这样就能实现自动地访问。这种定位方法仅仅只适用于文本链接的场景, 它通过元素标签所对应的文本信息, 来找到并定位那个元素。跟其他的元素定位方法相比之下, 它的适用的场景是比较有限的。比如说百度首页上面关于 “新闻” 这个文字, 它所对应的 link text 属性的值就是 “新闻”, 这样的话, 你就可以用这个属性来对元素进行定位了。代码为 ._text新闻2.方法三是通过使用XPath属性来进行定位操作。XPath这个词, 它是英文里面那个XML Path的缩写形式, 意思就是说, 它是一种专门用来定位XML文档路径的语言。XPath这个东西, 它是在基于XML的那种树状的结构上面去进行信息的查找工作的, 它会使用那些路径表达式来去把XML文档里面的某个节点或者是一组节点给定位住。你要是去把这个从最上面那一个根节点一直到它那个目标节点一路上面经过的所有节点的都记录下来的信息弄好了, 那么就能够形成那只有唯一的一条能够到达当前这个目标节点的路径表达式了。咱们可以把这种强大的语言用在Web页面元素的定位上, 定位的方式一般有两种, 分别是绝对路径和相对路径, 具体情况如下。1绝对路径绝对路径表达式是以那个斜杠开头的, 它会从整个结构最上面的根节点开始往下走, 一直延伸到你想要找的那个目标节点才停下来。当你要找的元素的层级很深, 嵌套得很多很多的阶段时候, 这个绝对路径表达式的长度就会被拉得特别长, 看起来会不太舒服, 也就很难一眼就看懂它的意思。这种情况不仅会让你去寻找东西的时候速度变慢, 效率降低, 而且到了后来对这部分内容进行维护和修改的阶段也会变得非常困难, 很不容易打理清楚。所以基于以上这些原因, 通常都不太建议大家在实际的操作过程中去使用这种方式。2相对路径相对路径表达式是以双斜杠“//”开头的, 这种表达式是从某个特定的节点开始出发, 然后接着沿着树形的结构一直往下走, 直到抵达目标节点的位置才停止。当前大多数主流的浏览器, 比如谷歌浏览器以及火狐浏览器等都准备了 XPath 的专用工具, 这些工具可以帮助人们非常轻松地获取到所需要的 XPath 路径信息。比如, 你要是想知道百度搜索框的 XPath 属性是什么, 那你可以先定位到这个元素, 然后右键点击它, 在出现的快捷菜单里面找到“Copy”, 再点击下面的“Copy XPath”选项, 这样就可以把 XPath 复制下来了, 这个属性的值写的是“//*”。在这里面, “//”这两个符号的意思是说在当前页面的某个目录下找东西, “*”这个星号是通配符, 意思是说要匹配任意类型的节点, 而“”这部分的意思则是说最后要匹配到的那个元素的 id 属性值得等于 kw。2.N通过CSS属性来把位置固定住, 从而实现那个定位效果。层叠样式表 CSS 是英文 Style 的简称, 它是一种用于表现 HTML 或 XML 等文件样式的计算机语言。同时, 你也可以通过使用浏览器工具来查询相关元素的CSS, 借此实现元素定位。比如说, 你能够先定位到百度搜索框这个元素, 然后去查看它对应的 HTML 代码, 再通过快捷菜单里的“Copy - Copy”这个选项来获取该元素的 CSS 属性。这时, 你会看到它的属性值就是#kw。接下来, 相关的代码就可以按照下面的方式来进行编写:通过选取元素#kw来进行操作。第三步就是把用户进行的操作给拿过来, 然后再对这些动作进行处理。库中有一个API, 它可以使用IE等浏览器来进行Web测试, 这个测试模拟了用户打开浏览器的行为, 并且支持在页面上单击鼠标, 让鼠标在某个元素上悬停, 以及进行键盘的各项操作, 测试的过程是通过模拟用户在前端发出的键盘和鼠标操作, 来触发前端页面的事件, 然后再解析网页文档以获取相应的结果, 并最后进行验证。3.1鼠标事件鼠标操作除了我们比较熟悉的单击操作外还包括右击、双击、悬停和拖动等。在 中将这些关于鼠标操作的方法封装在 类提供。例如鼠标悬停的代码为# 引入类from mon. ⁃# 定位元素并悬停上面的内容等于那个带有文库字样的文本元素。这是一个属于上方位置的空白部分。3.2键盘操作Keys 类为所有的键盘提供了操作方法, 该类既可以用来模拟键盘输入, 也可以用来模拟键盘按键操作, 其中也包括组合键的按下行为, 比如 CtrlN 这个组合。我们要执行模拟用户百度搜索框中输入搜索关键字的动作。就是, 它的代码为:# 引入 Keys 类从mon。keys 中获取 Keys。模拟输入框, 将内容输入到里面。.kw.3.3元素等待因为自动化进行测试操作的速度比人去操作要快出好多, 另外现在网页当中普遍都在使用 AJAX 这种技术, 所以页面里面的各种元素有可能不会在同一时刻被加载出来, 这样一来就必须要设置合适的等待时间, 这样才能确保那些元素能够被正确地识别出来, 在这件事务里面总共有两种类型的等待方法, 一个叫显式等待, 另一个叫隐式等待。3.4多窗口切换如果在操作的过程中, 一旦单击了某些链接, 导致弹出了新的窗口, 那么就需要利用 .这种方法进行切换。通过这样的切换操作, 就可以确保后续的一系列相关工作能够顺顺利利地开展, 不会出现中断或者其他意外阻碍的情况, 从而让整个操作的流程保持在正常且连贯的状态中。3.5警告框处理除了能够处理由其他元素弹出的对话框之外, 我们还可以通过特定的方式来应对警告框。具体而言, 应当使用这一工具来完成对警告框的定位工作。在完成定位之后便可以采用相关的命令去执行一系列操作动作了。在此过程中可用到的技术手段涵盖但不限于以下几种情形:返回出现在警告框里面的那些文字信息。接受当前警告框解散当前警告框将文本内容输送到当前显示的那个警告对话框里。关于第4点, 我们开展了自动化测试方面的实践。自动化测试这个过程, 简单来说可以分成好几个阶段。首先是得把测试需求给分析清楚, 接着是编写测试用例, 然后需要搭建好测试环境, 之后就是创建测试脚本, 随后再执行相关测试, 最后要对测试结果做分析处理, 大致流程就是这样子。4.针对1进行详细的分析, 以明确具体的测试需求是什么。不管是采用人工去执行测试任务, 还是借助工具来实现自动化测试这种模式, 在咱们正式展开测试工作之前的首要前提条件之一, 就是必须要弄清楚测试需求到底是什么, 然后依据已经确认的需求内容进行分析, 进而判定出被测软件系统里面究竟是哪些模块比较适宜开展自动化的功能测试环节。4.第2步, 去编写那些测试用例。现在人做那个自动化测试, 它不是凭空乱来的, 它是建立在手工测试已经打底子的那种基础上面的, 得先去分析每一个模块它们各自都有什么功能特点, 然后看着手头上已经有的一套那个功能测试案例, 把需要用自动化的那些个案给抽出来, 还得接着补充完善, 争取能把事情细化到具体的每一个页面和每一个具体对象上面去。4.进行第三步, 来搭建测试环境。在进行自动化测试环境的搭建工作时, 第一步是先完成下载与安装操作, 随后还需要安装管理工具 pip, 第二步接着要把相关的包给下载并安装下来, 并且还要去核验一下安装的工作到底有没有成功做彻底, 最后一步则是去获取浏览器驱动并进行下载和安装工作, 同时必须把驱动文件安置到相应软件安装目录所在的最高层级文件夹内部, 这一点非常需要引起大家的注意, 因为如果浏览器软件的版本、运行环境的版本以及对应浏览器的驱动三者之间没有实现相互匹配的话那么就会导致浏览器在之后无法正常启动的现象发生。下面的内容是借助于软件自身所附带的那个 IDLE 运行环境, 来作为例子去验证一下, 这个相关的环境到底是不是已经搭建成功了, 其中所提及的具体操作步骤是启动谷歌浏览器, 而具体的代码内容如下所示:from #导入 模块 ..get在执行程序之后的情况是, 如果可以达成自动启动谷歌浏览器并且访问百度首页的状态, 那就可以认为环境搭建成功的状态已经成立。4.进行第4步操作, 也就是创建测试脚本。在进行规模偏大的系统测试工作之际, 人们往往可以选择对某些特定技术手段实施二次封装动作, 借此方式去搭建属于自己的测试框架体系, 这一做法能够有效提升针对页面内部元素所具有的可视化表现程度, 进而大幅度提高在编写测试脚本环节的工作效率。与此同时, 那个被构建出来的测试框架本身应当是由待测系统功能当中能够被抽离出来的共用部分来组成的, 它不能产生对于具体应用系统的依赖关系, 也就是意味着测试框架与那个正在被测试的系统之间应当保持尽可能低的耦合状态, 通过这种状态的确立, 可以使测试框架整体具备较高水平的可复用性能。为了把脚本里面那些重复多余的东西给去掉, 从而把这个测试程序维护起来所需的成本能够有效地降低一些, 咱们现在可以把在测试程序当中那些一致性的、共同的脚本部分拿出来进行一个提取的操作呢, 然后要把它们变成类还有接口这种形式出来, 以便让其他的脚本在进行调用的时候有一个统一的方式去使用。自动化测试脚本主要是围绕业务流程来开展的, 它是由页面元素、业务逻辑以及测试数据等部分组成的, 关于测试 data 这部分内容, 既可以被存放在 Excel 表格里面, 同样也可以是被存放在像 MySQL 这样的数据库之中。下面我们会以某论坛系统当中的注册功能作为一个具体的例子来进行展示, 相关的代码如下:fromtime ..get:8081/bbs/把那个叫_text的元素里面的内容清空成空字符串, 然后模拟点击它一下这个动作的效果是让界面跳转到注册页面。time.sleep2#停顿 2 秒.强.强/。wull#输入用户名.. 接下来, 请输入密码。..将空白的字符串转换为输入确认密码。.h//这个标识的名字, 它被称为sex。#输入性别#输入电话.h//input这里的名称被指定为电话号码。