这是我在调试我们 App 时候发现的一个很奇怪的问题,目前还没有找到有效的解决办法。

环境:
Appium 1.3.1
华为荣耀 6Plus,分辨率:1080*1920
Android 4.4.2

首先,我们的 App 某个界面是这样的:(应该很多人用过)

这是可以上下滑动的 WebView 界面,直接在此界面定位元素是可以正确点击的。

然后,我们进行了滑动操作,滑到了最底下,界面如下:

这时候我在脚本中点击就会出现点错的情况。例如我想点"济宁",实际上点击到的是"济南"!
dump XML 文件查看其坐标:

<node index="1" text="" resource-id="" class="android.view.View" package="xxx.xxx" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[333,1641][582,1776]">
  <node index="0" text="" resource-id="" class="android.view.View" package="xxx.xxx" content-desc="济宁 Link" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[333,1641][582,1776]" /> 
  </node>

在 XML 中看到,“济宁” 的边界坐标为"[333,1641][582,1776]",很明显,我们的手机分辨率是 1080*1920,而"济宁"是在最底下,其边界最下面的值应该是接近 1900 的,这里的坐标就是出错了!

那么问题来了,为何会出现这种情况呢?我应该如何解决 T_T,欢迎探讨。@chenhengjie123@mads

不能叫解决方案的解决方案:
绕过去!在遇到这种情况的时候,加个特例,把获取到的纵坐标 Y 值,加上个 100,就点到了。

CMDCommand("adb shell input tap " + x.toString() + " " + (y+100).toString());


↙↙↙阅读原文可查看相关链接,并与作者交流