UI测试自动化之“屏幕坐标”

什么是坐标?

首先我们介绍一下坐标的概念;这里我们说的坐标是屏幕坐标

1、坐标用距离窗口左上角的水平距离和垂直距离来指定对象的位置
2、坐标的X轴向右为正,Y轴向下为正
3、坐标原点位于窗口的左上角

我画了一张图来辅助理解一下坐标
1024*768的显示器

这是一个1024*768的显示器;
你可以把坐标理解成显示器上的经纬度;我们可以通过坐标在显示器上找到未唯一的位置;

坐标在测试自动化的使用场景

可能有人会想坐标怎么能和测试自动化扯到一起去、想象一下、如果你的项目中需要做一个“抽奖功能”、在双旦呀、双11呀、春节呀来一波抽奖、表面上给用户送一波福利;

写case的时候你就在思考、怎么样测试产品提出的开奖概率;手机的开奖概率和手机壳的概率肯定是不一样的;

我们在设计用例的时候就需要考虑到、一般来说、你可以用接口自动化来跑、另外一个方案就是人工在界面上点呀点。

当用例执行完之后去数据库拉一把数据、计算一下每一个奖品的出现概率就可以了;

在我们的项目中就算你用接口跑完了数据、还是需要在UI上验证一下功能!

聪明一点的人会想到用“按键精灵”来录制、然后回放的时候死循环;
如果你用过“按键精灵”的录制功能、大概知道按键精灵的录制就完全使用的是坐标点击来实现的;

对于程序逻辑简单、按钮位置固定的程序建议可以直接用坐标点击来协助我们重复去执行;下班的时候跑着脚本、早上过来看下数据库就能知道结果是否符合预期。

如何找坐标位置

如果你要求精准可以使用Win32 api来获取当前鼠标的坐标;也就是鼠标滑动的时候打印出坐标位置;

大部分情况下都不需要做到精准到1像素这样的情况、所以我们可以使用截图工具来丈量坐标位置:

一般情况下你使用QQ截图即可完成对目标坐标的获取。
截图工具获取坐标值
上面的图片中我用截图工具来丈量了“用户名输入框的坐标位置(712,183)
我们只要使用MoveTo(712,183)这样的命令即可把鼠标移动到输入框上

使用坐标实现的一个自动登录用例

#! /usr/bin/env python
import pyautogui
import time
#用户名输入框
pyautogui.moveTo(712,183)
pyautogui.click()
pyautogui.typewrite("huang")
time.sleep(3)
#密码输入框
pyautogui.moveTo(712,234)
pyautogui.click()
pyautogui.typewrite("11qq``1")
#登录按钮
pyautogui.moveTo(712,356)
pyautogui.click()

通过上面的代码我们实现一个简单的登录功能

下面是用坐标点击实现的一个自动登录用例
自动登录

总结一下

1、对于按钮位置固定、并且逻辑比较简单的功能、我们是完全可以使用坐标来实现自动化的;
2、如果想做到更好的适配、我们可以把窗口移动到屏幕的(0,0)位置
3、最简单的使用坐标点击的工具:按键精灵
4、如果你想用Python来实现坐标点击自动化;那么我推荐用Pyautogui

相关的一些连接

  1. 微软坐标介绍
  2. Python模拟鼠标键盘
  3. 按键精灵