Appium EditText 的 focusable 属性设置成了 false,sendkeys 方法调用没有反应

胖虎 · 2017年01月13日 · 最后由 magicyang 回复于 2017年06月12日 · 2958 次阅读

用 Appium 操作某个界面时遇到了 1 个控件非常难以搞定,如下图:


可以看到 “有效期” 这个控件为 Edittext 的 focusable 属性为 false,并且点击这个控件的时候会弹出下面的选择控件 (该控件无法没识别,也没办法映射在 UIAutomator viewer 工具里)
我通过下面种方式尝试将字符串设置在控件中,均没有成功,特来求助大家给点思路,在这里拜谢了!!

1.我想把字符串通过 sendkeys 的方式输入进去,结果界面上没有任何反应
2.通过调用 Android 内置的键盘命令去操作:driver.sendKeyEvent,也没有成功
3.我通过 adb shell sendevent 的方式手动在 CMD 控制台输入,也没有反应
4.点击弹出来的这个选择日期的控件是开发自己定制的,不知道是不是这个原因导致无法映射在 UIAutomator viewer 工具里,通过坐标去选择的话,也比较困难 (如果匹配 N 种品牌、N 种分辨率的机型,脚本的成功率很低)

共收到 9 条回复 时间 点赞

没人回复吗?

求大神来帮忙看看啊

我自己弄了一个很扯淡的操作,看看适不适合你(假设有效期为 20 年 06 月,假设你的年月都是当前时间)
按照你这个图片,首先使用 find id by name 去找年份的数字为 time.localtime().tm_year
先定义一个 el1 = driver.find_element_by_name(str(time.localtime().tm_year))
然后定义一个 el2 = driver.find_element_by_name(str(time.localtime().tm_year + 1))
20-17 =3 也就是要滑动三次
driver.drag_and_drop(el2, el1) 这个动作 3 次
我的思路大概就是这个样子,不对还请见谅

#3 楼 @jiaoluo 哥们,你的方法似乎是没有办法的办法,还是感谢你,我抽空去试试,其实我遇到的这个问题蛮考自动化测试人员的,不动点脑子还真搞不定。

#3 楼 @jiaoluo 你说的 drag and drop 这个方法似乎没有啊,请问 1 下具体如何使用?

#5 楼 @siwen driver.drag_and_drop 这个方法应该可以直接调用的啊,我的环境是 win 下的 appium 加上 python2.7

#6 楼 @jiaoluo Java 里面的方法是什么?我似乎没有找到

#7 楼 @siwen 我没有 java,我用的是 python,sorry

从开发的角度来说,focusable 就是不能获取焦点,自然就不可能可以编辑。
这个只能用 SETTEXT 的方法来尝试修改。
至于 APPIUM 这种 EDITTEXT 支不支持 SETTEXT,我不确认。

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