UiAutomator UiAutomator 定位控件遇到的奇怪事件! 求助各位高手指教

暴走喵 · 2016年04月21日 · 最后由 大龄非待业青年 回复于 2016年07月18日 · 3043 次阅读

测试界面和界面控件如下图所示:

我目的是想双击第二个列表项进入下一层, 但是实际测试时总是双击第一个列表项进入下一层. 测试脚本如下:

打印出的两个信息如下, 就是 bilibili 开头的两条. 可见确实是定位到了第二个列表项. :

但是紧跟在这两条信息后面的一条是我双击的坐标. 我是以定位到的控件的 left + 250 作为双击的 x 坐标, top+50 作为双击的 Y 坐标. 所以根据坐标来看我之前定位的是第一个列表项.

而且如果我把注释的代码去掉注释, 就能够正确的从第二个列表项进入了

所以 .....到底什么原因. 求高手指点!

共收到 11 条回复 时间 点赞

把 left + 250 和 top+200 都还原成 +0,+0,;然后再试一下可不可以点击到按摩店。你第一个 secondStore 的 top 是整个 linearLayout 的 top,第二个是按摩店 TextView 的 top,两者的高度差可能是你点击出现错误的原因

#1 楼 @herointhemirror 但是有个问题 你看啊 我第二个按摩店的所在的 LinearLayout 的 top 是 105 啊. 就算跟里面的 TextView 有高度差. 也不应该像得到的 (top + 50) = 75 啊. 这样看的话 top 的值就是 25 了

@runaway_girl 为啥要 top+200?你的控件 secondStore 位置是 0,105,高度没有那么高呀(只有 105),加 200 都出列表了

#3 楼 @biyunfei 额 我说错了 是 top+50

#3 楼 @biyunfei 刚刚修改了

所以知道是为什么了么?

—— 来自 TesterHome 官方 安卓客户端

secondstore 那个 uiobject 的 uiselector 是错误的。取消注释之后为什么能够正确点到呢,是因为你对 secondstore 重新赋值了,它的 selector 变成正确的了。正确归正确,但是你这样子写 selector 的方式好麻烦啊

—— 来自 TesterHome 官方 安卓客户端

#2 楼 @runaway_girl 你打的 log 是 top+50,你下面描述是 top+200,到底是哪个麻烦先自己搞清楚比较好

#8 楼 @herointhemirror 你看还是 top+200 吗 我 5 天前已经改成了 top+50 了啊

#7 楼 @haluuand secondStore 所在的 LinearLayout 不就是外层 ListView 的第 1 个控件吗. 所以 我的 secondStore = uiObject.getChild(new UiSelector().index(1)); 那里不对呢

😅 看到了按摩店。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册