当 Calabash iOS 在其结果中向我发送 ***** 时,这是什么意思?

When Calabash iOS sends me ***** in its results, what does that mean?

客户端:ruby-2.1.5/gems/calabash-cucumber-0.16.3 服务器:"version":“0.16.2”

我在 map() 周围添加了一些调试。正常查询 returns this:

{:query=>"button marked:'Other options'", :method=>:query, :args=>[{:isEnabled=>1}], :r=>{"status_bar_orientation"=>"down", "results"=>["*****"], "outcome"=>"SUCCESS"}}

我不知道如何解释*****。

在map.rb的assert_map_results中“*****”是一个失败案例,所以显然是不好的。

在模拟器日志中,我看到类似

的内容

12 月 12 日 17:37:57 TimBs-MacBook-Pro.local[36121]:-[__NSCFString objectForKey:]:无法识别的选择器已发送至实例 0x7f7f6fe4f730 10 月 12 日 17:37:57 TimBs-MacBook-Pro.local[36121]:*** 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[__NSCFString objectForKey:]:无法识别选择器发送到实例 0x7f7f6fe4f730'

我认为它是在尝试决定是否可以将 isEnabled 应用于字符串“*****”而不是行为类似于地图的对象。

他们到底为什么要选择信息量如此之小且费力地进行网络搜索的内容?


更新:我原来有

element = "button marked:'game hot icon norm'"
element_exists(element) && query(element, :isEnabled).first.eql?(1)

但找到了对

的引用
query("button isEnabled:1")

我误读并改编为查询("button",isEnabled:1)。这没有帮助,但不是“*****”结果的原因。不幸的是,回到一个已知的良好状态,并逐渐回到问题状态,并没有导致问题再次出现,尽管 git 说没有真正的区别。我只能怀疑一个肮脏的构建。

这意味着您试图在 Objective-C 对象上调用未知选择器。 在这种情况下,某些东西正在 NSString.

的实例上调用 objectForKey:

您正在尝试的查询或手势是什么运行?

是吗:

query("button marked:'Other options'", [{:isEnabled => 1}])

如果是这样,那么问题是 NSButton 没有响应 isEnabled:(注意结尾的 :)。那就是存取器。 setter 是:setEnabled:.

如果您尝试按启用程度进行过滤:

query("button marked:'Other options'", :isEnabled)

如果您尝试设置启用状态:

query("button marked:'Other options'", [{:setEnabled => 1}])

Why on earth did they choose something so uninformative and pigging hard to web-search for?

很难更改,因为 Calabash 卡在 0.x 中并使用语义版本控制,因此 API 在 1.x 版本之前无法更改。我相信(但我不记得了)Calabash 2.0 给出了更好的通知。