这是我在调试我们 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());