自动化测试之控件点击

简介:

UI自动化测试,首要考虑的是我们所选用的测试工具或框架对测试程序的支持如何。而这个支持,则主要是通过对控件的识别和操作来体现的;但是,不管一个测试工具或者框架对测试程序的支持程序如何,它执行测试程序时最终都是以屏幕的绝对坐标来定位执行的,尽管我们平时都能听到很多人在说,尽量避免用坐标。
  尽量避免用坐标和最终通过坐标来识别,这个看起来有点冲突,但是却又不会冲突,是不是有点类似太极的感觉了。
  坐标,通常分为两类:绝对坐标和相对坐标。
  1. 通常我们所说的坐标都是基于屏幕左上角的绝对坐标。测试工具和我们人的操作最终也都是通过这个坐标来进行测试程序操作的,只不过有的我们知道,有的我们不知道,仅此而已。
  通俗的讲:我们人手动来点击屏幕的时候,只是在点击的位置发送一个屏幕点击事件,这个屏幕点击事件通过windows库定位到当前活动的窗体,再对这个窗体的一个具体位置传递点击事件,从而获得响应。这个过程,在我们的感官和需求中,我们只需要直接对活动窗体的进行操作的结果,至于定位,who care?
  自动化测试本质上就是来模拟人的行为的操作,所以实现过程大致类似。它首先通过我们在代码中编写的id、text、index、class等来定位到我们要操作的控件,然后再读取这个控件的x、y属性来发送点击事件。但是,在使用层面,我们只看到了通过id来点击,至于其他获取坐标这些,leave them alone。
  2. 说到相对坐标,这个就稍微有点复杂。目前已知的相对方式有相对左上、左下、右上、右下、中上、中下、居中;并且根据是否随着父窗口变化而变化,又可分类为:不扩展、同步扩展(和父窗口一起放大/缩小)、按比例扩展(父窗口扩大3倍,该对象也扩大3倍)。
  举个例子来说,屏幕上有一个记事本窗口“记事本.txt”,它的坐标绝对坐标是400,600,这个记事本的开始菜单栏,它的坐标是450,700。如果假设记事本窗口的坐标为,那么这个开始菜单栏就可以描述为:相对于窗口"记事本.txt"的坐标为50,100,绝对坐标就可以表示为;再假设菜单栏中的编辑按钮绝对坐标为500,700,那么它就可以描述为:相对于菜单栏的坐标为50,0,绝对坐标就可以表示为。这样的话,这个窗口上的所有坐标就都可以用一个坐标来维护了,如果窗口位置发生变化,我们也只需要修改一个最上层父窗口的坐标就可以动态适配所有按钮的坐标了。
  上面就是相对的解释。其实说白了,所谓相对坐标,就是一种优化的坐标计算方式,可以让我们用尽量少的改动去适应更多的变化。
  至于它的相对方式和扩展方式,则就只是其中的一些计算方式,在这里就不一一举例了。
  那么,了解了上面的这些,我们可以做些什么呢?
  平时在开展自动化测试时,总是会遇到一些不能识别的自定义控件,尤其是app类型程序。那么这时候我们就可以通过上面的坐标适配来完善解决一下。
  下面,我来简单说一个基于坐标的控件识别的简单实现思路:
  1. 实现思想:通过虚拟截图的方式来提供一个快速定位虚拟控件的坐标系,并对齐赋予一些额外的识别参数;嵌入到其他测试工具中直接使用。
  2. 首先,通过调用windows api或者其他截图程序,对测试程序的全窗口截一个半透明的截图(可以按比例缩放);
  然后,获取测试程序的坐标,并监控这个截图上的拖拽事件来计算控件的坐标系,并写入xml文件;
  其次,将这个xml文件导入到测试工具的对象库中进行使用。这里需要注意,有的测试工具不支持外部自定义对象,所以需要做一些转换。
  3. 代码:以后再传吧。这块东西最好做成可视化的,比较易于操作
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
7月前
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
|
7月前
|
文字识别 小程序 测试技术
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
444 0
|
7月前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
|
1月前
|
数据采集 存储 监控
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
本文介绍了如何使用Node.js和Puppeteer实现自动化数据抓取,特别是针对新闻网站“澎湃新闻”。通过设置代理IP、User-Agent和Cookie,提高爬虫的效率和隐蔽性,避免被网站封锁。代码示例展示了如何模拟鼠标点击、键盘输入等操作,抓取并整理新闻数据,适用于需要规避IP限制和突破频率限制的场景。
100 10
|
7月前
|
JavaScript 前端开发 测试技术
《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
【5月更文挑战第2天】在自动化测试过程中,经常会遇到处理日期控件的点击问题。宏哥之前分享过一种方法,但如果输入框是`readonly`属性,这种方法就无法奏效了。不过,通过修改元素属性,依然可以实现自动化填写日期。首先,定位到日期输入框并移除`readonly`属性,然后使用`sendKeys`方法输入日期。这样,即使输入框设置了`readonly`,也能成功处理日期控件。
124 1
|
7月前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十七)-java+ selenium自动化测试-日历时间控件-上篇(详解教程)
【5月更文挑战第1天】该文介绍了使用Selenium自动化测试网页日历控件的方法。首先,文章提到在某些Web应用中,日历控件常用于选择日期并筛选数据。接着,它提供了两个实现思路:一是将日历视为文本输入框,直接输入日期;二是模拟用户交互,逐步选择日期。文中给出了JQueryUI网站的一个示例,并展示了对应的Java代码实现,包括点击日历、选择日期等操作。
147 0
|
7月前
|
人工智能 前端开发 Java
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
|
容器
老板叫我写个APP自动化--方法二次封装--01点击输入
老板叫我写个APP自动化--方法二次封装--01点击输入
90 0
|
XML JavaScript 测试技术