美文网首页
Python Appium自动化测试 控件坐标获取

Python Appium自动化测试 控件坐标获取

作者: 白码会说 | 来源:发表于2020-12-12 22:14 被阅读0次

    Time will tell.

    一、第一种方法(MonkeyRecorder获取坐标)

    下面就 MonkeyRecorder 获取坐标的方式,进行演示。 MonkeyRecorder 是一个比较好用的获取坐标的工具,它是用来获取真机或模拟器上坐标的工具,当我们点击真机或模拟器上的空间时,就能显示真机或模拟器上的点击点的坐标。

    (1)MonkeyRecorder的启动

    1.首先安卓手机连接上电脑,并保证以下两个条件成立:

    • 终端USB调成开发者模式

    • 电脑安装手机驱动

    2.手机连接成功后,打开 cmd 窗口,输入 adb devices 查看已连接真机或模拟器设备的名称,我们这里仍以夜神模拟器为代表。如图:

    3.在 cmd 窗口,输入 monkeyrunner 后,启动 Monkeyrunner 。做以下操作:导入 MonkeyRecorder 包、连接模拟器设备、以 MonkeyRecorder 方式启动模拟器,并依次输入如下命令:

    from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
    
    from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
    
    device=MonkeyRunner.waitForConnection()
    
    recorder.start(device)
    
    

    4.到此,MonkeyRecorder正式启动。截图如下:

    (2)MonkeyRecorder的使用

    1.我们这里只是使用 MonkeyRecorder 来记录坐标,获取坐标的方式很简单。比如 qq 的登录界面,点击“登录”按钮,右侧就会显示该按钮的坐标;同样,点击账号输入框或密码输入框,右侧同样会显示坐标。这个坐标就是我们需要获得的坐标。

    2.同时,MonkeyRecorder 中的界面是同模拟器页面保持一致的,在 MonkeyRecorder 中触发任一操作,模拟器上会有相应的触发。如果两者没有保持一致,则点击 MonkeyRecorder 右上角的 Refresh Display 即可刷新页面。

    二、第二种方法(Uiautomatorviewer)

    网上很多推荐获取坐标点的方式,是使用 android-sdk/tools 目录下,提供的 uiautomatorviewer 工具来获取。但是这种方式非常的繁琐,而实际上,我们又不需要如此精确的坐标点,毕竟控件那么大,只要点击的坐标落在控件的位置上,即可。

    Uiautomatorviewer 是 Android sdk 自带的工具,位置在 sdk/tools 下。

    工具打开方法:

    1. sdk/tools 下,找到uiautomatorviewer,双击打开

    2. 在 cmd 命令行,直接输入uiautomatorviewer,打开该工具

    [图片上传失败...(image-d7f7b1-1607782316642)]

    打开该工具后,我们就可以开始使用了。

    运行环境:Windows

    使用方法:

    1.连接模拟器或真机(我们这里使用模拟器)


    2.打开模拟器中指定的app,在 uiautomatorviewer 中截图指定页面

    3.截图成功后,页面显示如下:

    需要注意的是,你的手机设备或模拟器的api要在16以上,也就是android版本得是4.1以上,因为这个工具是google在4.1以后推出来的,只适用于4.1以后的版本

    4.结果分析。从上图中,可以获取到对应控件的ID及控件左上角、右下角的坐标。

    1)对于控件坐标而言,这里很简单,我们一般取中点坐标,即:中点坐标=((左上角横坐标+右下角横坐标)/2,(左上角纵坐标+右下角纵坐标)/2)

    如上图中,中点坐标即 ((30+1009)/2,(268+314)/2)=(519.5,291) 。

    注:坐标一般取整。

    由此,我们可以得到所需控件的坐标,在脚本中,直接touch该点坐标即可。

    2)对于控件ID而言,即上图中的红色框中部分,同样在脚本中,直接touch该ID即可。另外,利用uiautomatorviewer还可以获取父级与子级控件之间的关系,获取到的关系同HierarchyViewer保持一致。uiautomatorviewer就介绍到这里。

    三、第三种方法(Pointer location获取坐标)

    那么我推荐另外一种更简单的方式,来获取当前你看见的,在待测试设备上的控件的坐标点的定位方式。那就是利用 Android 设备的开发者选项。

    这里以夜神模拟器为例:

    1.点击设置

    2.点击开发者选项

    3.在指针位置 ,将这个属性开启之后,当手指在屏幕上滑动的时候,就可以在顶部看到当前触摸点的 X、Y 轴的坐标,这就是我们需要的。

    注意:开发者选项不是默认可见的,你需要自行开启开发者模式,之后再进行此操作。

    小结

    (1)安卓系统开启开发者模式方法很多,我们模拟器是6.3.0.0版本这里只讲适合夜神模拟器的方法,
    接下来进入图文教程:

    1.点击设置

    2.点击关于平板电脑

    3.点击7下版本号(手残请点击20下),点击箭头指向处的版本号(最底下的版本号),而不是上面的Android版本号

    4.返回设置菜单


    这里补充一点,如果感觉开发者这个选项碍眼,可以选择关闭,关闭方法:设置–应用–全部–找到设置软件,点击进入–清除数据。

    这样开发者模式又隐藏了。


    关于控件坐标点获取就到这里了,希望大家都能熟练掌握。如果你对Python自动化软件测试感兴趣可以加入我们扣裙一起学习175317069。有各项测试学习资源,也有行业深潜多年的技术人分析讲解。

    欢迎【点赞】、【评论】、【关注】~

    Time will tell.(时间会证明一切)

    相关文章

      网友评论

          本文标题:Python Appium自动化测试 控件坐标获取

          本文链接:https://www.haomeiwen.com/subject/ghgygktx.html