Mac 下使用 Appium 对 iOS 进行自动化测试,在用 Inspector 进行元素的识别过程中,使用了 record 模式,得到的代码复制到脚本中执行报错 “duration value must be greater than or equal to 0.5 or less than 6”
经过查看 Appium server 的 log,发现是由于 Inspector 工具 record 模式下的 ruby 代码,时间单位和 ruby_client 不一致导致的。比如 record 模式下 ruby 是
Appium::TouchAction.new :x => 317, :y => 631, :fingers => 1, :tapCount => 1, :duration => 0.5
可一运行脚本,就会报提示 /response.rb:52:in `assert_ok': duration value must be greater than or equal to 0.5 or less than 60 (Selenium::WebDriver::Error::JavascriptError)
由于 record 模式下,时间单位是秒,可 ruby_client 里,时间单位是毫秒,问题找到了,剩下只需要把 ruby_client 里面的值对应扩大 1000 倍。
Appium::TouchAction.new :x => 317, :y => 631, :fingers => 1, :tapCount => 1, :duration => 500
改后,脚本顺利执行,没有报错。