我有验证代码,当它不满足要求时,它会设置 EditText 的错误。
field.setError(errorMessage);
这会在字段上方放置一个带有感叹号的红色小圆圈,当我触摸该字段时,它会在黑框中显示我的错误消息。伟大的!
现在我想让 calbash 验证该字段是否未通过验证。目前至少我不关心具体的错误消息 - 我只想知道显示了一条错误消息(或者我很乐意接受感叹号,但因为我无法使用查询找到它在控制台中,我怀疑这会更难)。
这个查询:
query("android.widget.PopupWindow$PopupViewContainer")
查找错误消息窗口(如果存在)。
但只有当有错误的字段有焦点时才会出现。而且我只在字段失去焦点时设置错误。应该没问题 - 我的步骤可以在字段中输入文本,离开字段,然后返回。当我手动执行这些操作时,会显示错误消息窗口。我还不能做的是编写一个步骤来完成这些事情并可靠地显示错误消息窗口。我努力了
query("EditText id:'#{field_id}'", {:setText => bad_text})
touch(query("* id:'#{another_field_id}'")[0])
touch(query("* id:'#{field_id}'")[0])
和
query("EditText id:'#{field_id}'", {:setText => bad_text})
system("#{default_device.adb_command} shell input keyevent KEYCODE_TAB")
touch(query("* id:'#{field_id}'")[0])
并且对于第一个 EditText,这两个行为都正确,但无法为后续 EditText 显示错误消息窗口。为什么?这样做的正确方法是什么?