我在运行 Calabash 测试并尝试触摸元素时遇到了一些随机错误
uia action failed because: Timed out running command uia.tapOffset('{:x 187.5, :y 131.5}')
我在Yosemite、Xcode 6.2和iOS Simulator (iPhone 6 iOS 8.1)上运行测试
使用的葫芦版本是0.13.0。
有谁知道它为什么会发生以及如何解决它?
更新
当我说“随机”时,我的意思是有时相同的测试会通过,有时会因为这个错误而失败。我刚刚检查过,在文本字段中输入一些文本后尝试点击选项卡按钮时似乎总是失败。所以我的猜测是当它试图触摸标签按钮时键盘仍然存在
供您参考,这是我为输入文本创建的方法
def type_text(accessibilityLabel, text)
query = "textField accessibilityLabel:'#{accessibilityLabel}'"
return unless safe_query(query).first["text"] != text
wait_for_ui_animation_to_end
safe_touch(query)
map(query, :setText, '')
map(query, :setText, text)
done
end
这些是我使用的safe_touch
和safe_query
方法
def safe_query(query)
wait_for(:timeout => 60, :timeout_message => "Timeout trying to query #{query}", :screenshot_on_error => true) do
element_exists(query)
end
query(query)
end
def safe_touch(query)
wait_for(:timeout => 60, :timeout_message => "Timeout trying to touch #{query}", :screenshot_on_error => true) do
element_exists(query)
end
touch(query)
end
更新 2
这是一个有时会失败的场景示例
这是测试失败时的屏幕截图
尝试点击标签栏项目时似乎没有任何障碍......