软件自动化测试工具之元素智能定位

江湖一直有着这么一句名言“天下武功,唯快不破"。那么在软件测试领域,自然而然我们会想到软件自动化测试。软件自动化测试的实现自然离不开软件自动化测试工具。软件自动化测试工具是软件自动化的载体,只有通过工具,我们才能实现。武林也是一样,成为武功盖世,除了武林秘决之外,还要有依天剑、屠龙刀的配合。

话说软件开发模式有:瀑布模型、增量式开发、螺旋开发、敏捷开发。软件业早期的开发模式主要以瀑布模型为主,后期逐渐专为敏捷开发。软件开发效率和变更频率也随着开发模式的变化而变化,优其到了敏捷开发模式。一些传统的自动化测试工具显示力不从心,很难应付软件开发的快速迭代和变更,导致一些公司开展自动化测试,徒劳无功。主要原因有:自动化用例建设速度慢,跟不上软件新增内容;软件变更频繁导致用例维护成本巨大;学习成本高。所有这些都是自动化测试在中国软件业难以建树的主要原因。

软件自动化测试工具工作流程:新建用例->调试用例->行执行用例->分析结果->输出报告->维护用例。其中:新建用例和维护用例是消耗最大的工作量。敏捷开发模式的引入,导致维护工量大大提升,甚至一度有超过新建用例工作量的趋势,这一直困扰软件自动化测试的一个头痛问题。

自动化用例维护环节中,元素定位失效是一个主要原因。下面我们看一下一些常用自动化工具的元素定位原理:

1、selenium元素定位样例

 以下是一段Python+ selenium的用例样例,对元素的操作是以元素id为基础的

 from selenium import webdriver
 url = "http://10.98.110.44/egov-portal/egov/shIndex.html"
 # 打开浏览器,最大化浏览器
 driver = webdriver.Chrome()
 driver.get( url )
 driver.implicitly_wait( 10 )
 driver.maximize_window()
 #输入账号
 driver.find_element_by_id("username").send_keys(“zhangsan")
 #输入密码
 driver.find_element_by_id("password").send_keys("ww1234")
 #点击登录按钮
 driver.find_element_by_id("submitButton").click()

 2、robotFramwork+seleniuLibrary元素定位样例

3、UFT工具元素定位方法样例

Dialog("Login").WinEdit("AgentName:").Set "mercury"
Dialog("Login_2").WinButton("Help").Click
Dialog("Login_2").Dialog("FlightReservations").Static("The password is ‘MERCURY‘").CheckCheckPoint("The password is ‘MERCURY‘")
Dialog("Login_2").Dialog("FlightReservations").WinButton("确定").Click
Dialog("Login").WinButton("OK").Click
Window("FlightReservation").Activate
Window("FlightReservation").ActiveX("MaskEdBox").Type "102715"
#选择日期
Window("Flight Reservation").WinComboBox("FlyFrom:").Select "Frankfurt"

从以上信息我看到,元素的定位都是通过元素的属性定位,元素属性主要有以下8种:

1、id定位: driver.find_element_by_id("kw")

2、name定位: driver.find_element_by_name("wd")

3、class定位: driver.find_element_by_class_name("s_ipt")

4、tag定位:driver.find_element_by_tag_name("input")

5、link定位:driver.find_element_by_link_text("新闻")

6、partial_link定位:driver.find_element_by_partial_link_text()

7、xpath定位: driver.find_element_by_xpath("/html/body/div[2]/div/form/div/input")

8、CSS定位:driver.find_element_by_css_selector

在现有的自动化软件当中,都是以上述8种定位方式中的一种对元素进行定位。现在现实的测试环境经常不是我们想象的那样平静。页面中出现id,name,tag 重复的很多。也许在我们写用例的不重复,经过一轮版本修改后很可能变得重复了。xpath是最不可能失效的,但是经常因父节点的修改而导致失效是常有的事。因此自动化设计人员疲于奔命的维护用例,工作量非常的巨大。

2008年市场上出现一款kylinTOP的软件,支持智能元素定位, 我比较感兴趣就去研究了一下,该软件的用例主要通过录制生成,录制生成一些可视化的脚本,如下所示:录制脚本是打开一个页面,击点一个按钮。

上图是点按钮的步骤,步骤中记录了按钮的多个属性:title|alt、src、border、alt、xpath以及它的孩子信息。有些属性并不能唯一定位元素(页面中存在重复),如:border。kylinTOP记录下了按钮元素的所有身份信息。当笔者尝试修改页面代码中title|alt的值 ,使页面中title|alt的值有重复。在脚本回放时,仍然可以正常运行。恢复title|alt值 ,重复上述修改步骤,逐个修改其它属性值,仍然不影响脚本运行。通过测试发现,修改按钮任何属性都不影响脚本执行。

通过阅读官网资料,说元素定位是根据元素的一系列属性进行定位,并不依赖于某一个属性,采取的是一种元素智能定位算法。在软件自动化测试领域,kylinTOP的元素定位的确有过人之处,大大提高了自动化用例执行的稳定性,节省了用例的维护成本。

原文地址:https://www.cnblogs.com/kylinTOP/p/12444131.html

时间: 2024-08-27 20:34:58

软件自动化测试工具之元素智能定位的相关文章

jQuery实现页面元素智能定位

原文:jQuery实现页面元素智能定位 源代码下载地址:http://www.zuidaima.com/share/1550463635950592.htm

JS-JQ实现页面滚动时元素智能定位(顶部-其他部位)

  阅读前提:充分理解div的三种定位方式:浮动,相对定位,绝对定位 方法一(顶部)      原理:直接使用css 进行控制:缺点:不兼容ie6-:      实现:position:fixed; top:0 方法二(顶部)      原理:获取页面被卷曲的高度(LEN),复制给 obj.STYLE.TOP=LEN,缺点,效果不是很流畅!      实现:      var len=document.documentElement.scrollTop||document.body.scroll

Appium+python移动自动化测试(四)--Monitor/uiautomatorviewer工具及元素定位方法

写在前面: 本文介绍识别元素的工具和元素的定位方法,识别元素的工具主要有uiautomator和monitor,以及Appium Inspector(Windows下小编在1.7.0之后版本可使用,1.4.16版本不行),本系列教程用的appium1.4.16本文,故暂不介绍Appium Inspector. 一.常用的识别元素的工具介绍 启动uiautomatorviewer.bat/monitor.bat.打开sdk/tools目录找到uiautomatorviewer.bat/monito

[原创]漫谈软件自动化测试-起源

江湖易老,弹指十年.不觉间已经在软件测试行当中闯荡了十来年,同时也见证了中国测试行业这波澜壮阔的激情岁月.最近痴迷于高晓松的<晓说>,追溯本源,谈古论今,端的是的风流倜傥,当然要忽略掉他那张没有脖子的大饼脸.由此,忽然间对软件测试的江湖史萌发了兴趣,我们一直对现在测试江湖流行的各种秘籍而痴迷,却往往忽略了秘籍到底是怎么来的.所以我们今天就来扒一扒软件测试江湖当中软件自动化测试这一流派的前世今生,也仅以此献给那些给这一流派做出极大贡献的前辈们. 软件自动化测试是软件测试江湖的一种流派,所以我们就

常用的好用的WEB自动化测试工具强列推荐

在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpath.class.tag.link.partial_link.partial_link中的一种作为对元素进行定位.现在现实的测试环境经常不是我们想象的那样平静.页面中出现id,name,tag 重复的很多.也许在我们写用例的不重复,经过一轮版本修改后很可能变得重复了.xpath是最不可能失效的,但是经

支付宝开源非侵入式 Android 自动化测试工具 Soloπ

Soloπ(SoloPi)是支付宝开源的一个无线化.非侵入式的Android自动化测试工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝贵时间. 本文是SoloPi团队关于项目的深度解读, 作者:乔瑞凯,蚂蚁金服高级无线开发工程师 前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放.图像识别.云测平台等测试技术贴合实际业务需求深度应用和创新,测试效率从而一次又一次被提升. 本文主要介绍支付宝在移动端上实

几款具有代表性的自动化测试工具汇总简介

几款具有代表性的自动化测试工具汇总简介一.传统自动化测试工具/商业工具(传统工具较多仅介绍两款,基本都是国外的) 1.QTP,全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0QTP是quicktest Professional的简称,是一种自动测试工具.使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本.因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那

Web自动化测试工具——Selenium

在最近的Web课程设计上我接触到了Selenium这款Web自动化测试工具,它可以通过一系列find_element()方法定位到目标元素,对其发送模拟按键操作,使操作自动化. 首先,使用pip安装Selenium的Python模块. 下面是我写的例程.find_element_by_name方法就是通过name属性来定位元素,然后通过send_keys()发送模拟按键.基于这样的操作基本可以完成各种web下的模拟操作. import time from selenium import webd

软件测试之三种自动化测试工具的简介

QTP/UFT,自动化测试工具之一,可代替人工重复性的手动测试,主要用于回归测试和软件更新版本的测试.使用此工具时,需要事先确定好需要测试的功能,操作步奏,输入的数据和期望的输出.他提供了符合所有应用软件环境的功能测试和回归测试的自动化,采用关键字驱动的理念以简化测试用例的创建和维护.它主要可以测试用户的操作过程,对用户的屏幕操作流程进行录制,自动生成功能测试和回归测试用例.专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制.初学者可以可以优先学习这一款软件测试工具,