商城网站素材,wordpress影视解析插件,手机上自己做网站,邯郸房产网签查询网Web 测试是软件测试中比较重要的一个分支#xff0c;而要实现 Web 自动化测试则要求测试人员能熟练掌握自动化测试工具和编程语言。介绍免费开源的 Web 测试工具 Selenium#xff0c;以及流行的编程语言 Python。根据自动化测试的原理#xff0c;对网页元素的常用定位方式而要实现 Web 自动化测试则要求测试人员能熟练掌握自动化测试工具和编程语言。介绍免费开源的 Web 测试工具 Selenium以及流行的编程语言 Python。根据自动化测试的原理对网页元素的常用定位方式如何对页面元素进行操作进行重点叙述。结合工作实际分析自动化测试的基本流程即分析测试需求、编写测试用例、搭建测试环境、创建测试脚本、执行测试及测试结果分析。最后对自动化测试的实践进行总结和展望为后续更好地开展测试工作奠定基础。
与手工测试类似自动化测试也需要制定测试计划根据软件需求规格说明书分析测试需求使用黑盒、白盒等方法设计测试用例在搭建好测试环境的基础上使用相关语言编写自动化脚本执行测试并记录缺陷等。当然在执行自动化脚本之前也需要进行手工测试为更好地发现缺陷奠定坚实的基础。
1 自动化测试技术
1.1测试工具
根据被测软件的类型不同可以选择不同的测试工具。例如针对桌面应用主流的测试工具有 UTF、Auto Runner 等如果测试的是 Web 系统Selenium 则是一种非常不错的选择。
Selenium 是一款免费、开源的分布式的自动化测试工具对商业用户也没有任何限制支持多种平台可以在 Windows、Linux、Mac 和 Solaris 等多种操作系统上运行支持多种浏览器包括 IE、Firefox、Safari、Opera、Chrome 等使用方便支持脚本录制可以将测试用例分布到不同的测试机器上执行支持多种语言包括C、Java、Ruby、Python、C#等。
1.2Python语言
Python 是一门优雅而健壮的编程语言它继承了传统编译语言的强大性和通用性同时也借鉴了简单脚本和解释语言的易用性。它的特点包括代码简洁、短小开源、跨平台面向对象可扩展性好等因此它被应用于数据分析与处理、网络爬虫、Web 应用开发、人工智能、自动化测试等多个领域。
在自动化测试领域既可以使用 Python 的标准库 PyUnit 作为自动化测试框架也可以使用 Robot Frame?work 等自动化测试框架来开展工作该框架具备良好的可扩展性支持关键字驱动可以同时测试多种类型的客户端或者接口可以进行分布式测试执行。
2 网页元素定位
自动化功能测试工具 Selenium 可以模仿人类对网页进行自动化的操作那么要实现对网页元素的操作就要能够精准地对网页元素进行定位。可以用于定位的常用的 Web 页面元素的属性有id、name、class name、link text、XPath 和 CSS Selector 等。下面我们重点介绍常用的四种方法。
2.1通过id属性进行定位
如果 Web 页面中的 id 不是动态的则一个页面的 id 是唯一的。该方法通过查找 Web 页面上的元素 id值来获取元素但是对于动态分配 Web 元素 id 的情况这种方法不能使用。
例如百度首页搜索框的源代码如下 input idkw namewd classs_ipt value maxlength255 autocompleteoff
不难发现其 id 属性是“kw”因此可以使用 id 来进行元素定位。driver 表示为创建的一个 webdriver 对象代码为 element driver.find_element_by_idkw 2.2 通过link text属性进行定位
访问网页的时候我们可以通过超链接的方式链接到下层的网页或者其他网站通过查找网页的 link text 属性模拟对链接文本的单击操作就可以实现自动地访问。该定位方法仅适用于文本链接的场景通过元素标签对应的文本信息来定位元素相对其他的元素定位方法适用的场景比较有限。 例如百度首页上方“新闻”文字的 link text 属性是 “新闻”可以使用该属性来进行元素定位。 代码为
element driver.find_element_by_link_text新闻 2.3通过XPath属性进行定位 XPath 是英文 XML Path Language 的简称即 XML 文档路径的定位语言。XPath 基于 XML 的树状结构进行信息的查找它使用路径表达式定位 XML 文档中的节点或节点集。通过记录由根节点到该节点经过的所有节点的 tagName 等信息可以形成唯一一条到达该节点的路径表达式。Selenium可以将这种强大的语言应用在 Web 页面元素的定位中定位的方式通常有绝对路径和相对路径两种。具体如下 1绝对路径 绝对路径表达式以“/”开头它从树形结构的根节点开始沿着树结构一直到目标节点结束。当元素层级很深的时候绝对路径表达式会过长阅读性不好既影响查找的效率又很难进行维护因此一般不建议使用。 2相对路径 相对路径表达式以“//”开头它从某个节点开始沿着树结构一直到目标节点结束。目前常用的浏览器谷歌、火狐等都提供了 XPath 的工具可以方便地获取XPath 路径。例如百度搜索框的 XPath 属性可以通过定位到该元素在该元素的 HTML 代码使用快捷菜单“Copy- Copy XPath”获得 其属值为“//*[idkw]”。“//”表示当前页面某个目录下“*”是通配符表示匹配任意的节点“[idkw]”表示匹配的这个元素的 id 属性值等于 kw。 2.4通过CSS属性进行定位 层叠样式表 CSS 是英文 Cascading Style Sheets 的简称是一种用来表现 HTML 或 XML 等文件样式的计算机语言它也可以通过浏览器工具查询相关元素的CSS从而进行元素定位。例如百度搜索框的 CSS 属性可以通过定位到该元素在该元素的 HTML 代码使用快捷菜单“Copy - Copy selector”获得其属性值为#kw。代码可以写成 element driver.find_element_by_css_selector#kw 3 获取和处理用户操作 Selenium 库中有一个 WebDriver 的 API它能使用 Chrome、Firefox、IE 等浏览器进行 Web 测试模拟用户打开浏览器在页面单击鼠标鼠标在某个元素上悬停进行键盘各项操作等。Selenium 测试通过模拟用户在前端的键盘鼠标等操作触发前端页面事件解析网页文档获取相应结果验证。 3.1鼠标事件 鼠标操作除了我们比较熟悉的单击操作外还包括右击、双击、悬停和拖动等。在 WebDriver 中将这些关于鼠标操作的方法封装在 ActionChains 类提供。例如鼠标悬停的代码为 # 引入ActionChains 类from selenium.webdriver.common.action_chains import Action?Chains# 定位元素并悬停abovedriver.find_element_by_link_text文库ActionChainsdriver.move_to_elementabove.perform 3.2键盘操作 所有键盘中操作的方法由 Keys 类提供它既可以模拟键盘的输入也可以模拟键盘按键包括组合键例如 CtrlN。模拟百度搜索框中输入搜索关键字 “Python”的代码为 # 引入 Keys 类from selenium.webdriver.common.keys import Keys# 模拟输入框输入内容driver.find_element_by_idkw.send_keysPython 3.3元素等待 由于自动化测试的操作速度比人工快许多加上目前网页中普遍使用 AJAX 技术页面元素可能不是同时被加载就需要设置合适的等待时间确保元素正确地被识别。WebDriver 中有两种类型的等待显式等待和隐式等待。 3.4多窗口切换 如果在操作过程中单击某个链接弹出新窗口后就需要使用 switch_to.window方法进行切换从而确保后续的相关操作能顺利进行。 3.5警告框处理 WebDriver 还可以处理由 JavaScript 生成的弹框方法是使用 switch_to_alert定位到警告框然后使用相关方法来进行操作使用的方法包括 ●text返回警告框中的文字信息 ●accept接受当前警告框 ●dismiss解散当前警告框 ●send_keysKeysToSend发送文本至当前警 告框 4 自动化测试的实践 自动化测试的过程大致可以分为分析测试需求、 编写测试用例、搭建测试环境、创建测试脚本、执行测试及测试结果分析等。 4.1 分析测试需求 不论是手工测试还是自动化测试测试需求都是测试工作开展的首要前提根据需求确定被测软件的哪些模块适合开展自动化功能测试。 4.2 编写测试用例 自动化测试是在手工测试的基础上进行的分析各模块的功能特点根据已有的功能测试用例抽取自动化测试用例并进行补充和完善尽量细化到具体的页面和对象。 4.3搭建测试环境 搭建自动化测试环境首先要下载并安装 Python 并且安装包管理工具 pip接着需要下载并安装 Python的 Selenium 包并且验证安装是否成功最后需要下载浏览器的驱动并放置在 Python 安装目录的根目录下。需要特别注意的是浏览器、Selenium 版本以及浏览器驱动的匹配否则浏览器将无法正常启动。下面在 Python 自带的 IDLE 环境中以启动谷歌浏览器为例来验证环境是否搭建成功。代码如下 from selenium import webdriver #导入 webdriver 模块driver webdriver.Chromedriver.gethttps://www.baidu.com 执行程序后如果可以自动启动谷歌浏览器并访 问“百度”首页就表示环境搭建成功 4.4创建测试脚本 对于较大的系统测试可以通过对 Selenium 进行二次封装搭建测试框架提高对页面元素的可视化程度从而提高测试脚本的编写效率。测试框架应该是由待测系统功能抽离出的共用部分来构建而成的不能依赖于具体的应用系统即测试框架与待测系统尽量是低耦合的这样可以使测试框架具有较高的可复用性。为了减少脚本的冗余降低脚本的维护成本可以将测试程序中一致的、共同的脚本提取出来作为类和接口供其他脚本进行调用。 自动化测试脚本主要围绕业务流程展开即由页面元素、业务逻辑、测试数据等组成测试数据既可以存放在 Excel 表中也可以存放在 MySQL 等数据库中。下面以某论坛系统的注册功能为例代码如下 from selenium import webdriverimport timedriver webdriver.Chromedriver.gethttp://172.21.1.7:8081/bbs/driver.find_element_by_link_textregister.click; #跳转至 注册页面time.sleep2#停顿 2 秒driver.find_element_by_nameuserName.send_keyswull#输入用户名driver.find_element_by_namepassword.send_keys wull123#输入密码driver.find_element_by_namepassconfirm.send_keyswull123#输入确认密码driver.find_element_by_xpath//select[namesex].send_keysfemale#输入性别#输入电话driver.find_element_by_xpath//input[namephone].send_keys13812345678#输入电邮driver.find_element_by_xpath//input[nameemail].send_keys12345678qq.comdriver.find_element_by_idsubmit.click#提交注册信息driver.switch_to_alert.accept 4.5 执行测试及测试结果分析 测试脚本是以.py 为后缀的文件如果需要执行之后生成测试报告需要安装并调用 Unittest 的第三方库HTMLTestRunner运行代码后生成的测试报告是 HT?ML 格式的可以根据测试报告对测试的结果进行分析。 5 结语 基于 SeleniumPython 的自动化测试应用可以减少人工多次的验证活动降低测试的成本从而较大幅度地提高软件测试的效率保证软件产品的质量。后期可以进一步优化自动化测试框架提高控件可视化识别的效率加快元素定位的效率并且加强测试用例的管理。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取