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

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

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

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

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是最不可能失效的,但是经常因父节点的修改而导致失效是常有的事。因此自动化设计人员疲于奔命的维护用例,工作量非常的巨大。

4、元素智能定位

kylinTOP的软件,支持智能元素定位, 我比较感兴趣就去研究了一下,该软件的用例主要通过录制生成,录制生成一些可视化的脚本,如下所示:

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

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

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

  1. 开源Web自动化测试工具Selenium IDE

    Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...

  2. selenium-java web自动化测试工具抓取百度搜索结果实例

    selenium-java web自动化测试工具抓取百度搜索结果实例 这种方式抓百度的搜索关键字结果非常容易抓长尾关键词,根据热门关键词去抓更多内容可以用抓google,百度的这种内容容易给屏蔽,用这 ...

  3. Web自动化测试:xpath & CSS Selector定位

    Xpath 和 CSS Selector简介 CSS Selector CSS Selector和Xpath都可以用来表示XML文档中的位置.CSS (Cascading Style Sheets)是 ...

  4. 推荐一款国产优秀的基于 AI 的 Web 自动化测试工具——kylinTOP 测试与监控平台

    对于于一般的传统的自动化测试工具,如:Selenium,robotFramework,QTP等.QTP可以通过操作录制生成自动化用例脚本.生成的脚本与Selenium.robotFramework类似 ...

  5. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  6. 【python+selenium的web自动化】- 8种元素定位方式详解

    ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定位方式进行总结归纳. ​ 说明:以下操作统 ...

  7. 技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

    原文链接 元素定位是 UI 自动化测试中最关键的一步,假如没有定位到元素,也就无法完成对页面的操作.那么在页面中如何定位到想要的元素,本小节讨论 Appium 元素定位方式. Appium的元素定位方 ...

  8. Web自动化测试工具调研

    背景 Web自动化测试越来越被重视, 因为现在Web已经是工程化的状态. 如何通过工具测试, 保证Web开发的质量,提升开发效率,是Web工具的诞生的来由. Web测试分为以下几个方面: 1. 界面测 ...

  9. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

随机推荐

  1. EncryptUtils

    package me.zhengjie.core.utils; import org.springframework.util.DigestUtils; import javax.crypto.Cip ...

  2. django项目导航页_20191128

    django项目导航页_20191128 第一步:python-django电商项目-需求分析架构设计数据库设计_20191115 python-django-linux上mysql的安装和配置_20 ...

  3. 翻转链表和k个一组翻转以及两两反转

    一.输入一个链表,输出反转后的链表. 非递归实现: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.v ...

  4. 实战:CentOS 7.2 / Zabbix3.4安装graphtrees

    众所周知的 Zabbix图形显示问题,决定使用graphtrees 插件. 环境:CentOS7.2 + Zabbix 3.4 1)首先切换到root用户以获得足够的权限将资源下载到 /usr/sha ...

  5. (七)spring+druid多数据源配置

    druid多数据源配置 一.druid简介 Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. ...

  6. 我在linux的第一个C程序

    今天在虚拟机装起了linux,根据大家学习所需要,可以安装自己喜欢的版本,我这里装的是centos 7.0版本,也正是学习的开始,现在来看看简洁大气的centos界面吧:     在centos编译C ...

  7. mysql表关系

    表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...

  8. JAVA SE Lesson 1

    1.  类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instance).2.  类由两大部分构成:属性以及方法.属性一般用 ...

  9. Center Loss - A Discriminative Feature Learning Approach for Deep Face Recognition

    URL:http://ydwen.github.io/papers/WenECCV16.pdf这篇论文主要的贡献就是提出了Center Loss的损失函数,利用Softmax Loss和Center ...

  10. ubuntu采用apt-get安装pure-ftpd

    apt-get install pure-ftpdcd /etc/pure-ftpd/auth #开启虚拟账户登陆;ln -s 60auth ../conf/PureDB 60auth #查看虚拟账户 ...