我正在尝试使用Calabash触摸UITextField.当我使用query("UITextField")[x]
,其中x是屏幕上的文本字段数组中的数字,我可以正确查询一个文本字段.但是,当我使用touch("UITextField")[x]
它时将始终触摸第一个文本字段.使用控制台和使用黄瓜运行测试时会发生这种情况.
这是关于我的设置的相关信息:
xcode-select --print-path /Applications/Xcode.app/Contents/Developer xcodebuild -version Xcode 7.2 Build version 7C68 calabash-ios version 0.16.4
Christopher .. 6
尝试
touch("UITextField index:x")
哪里x == your index
.
另外,请更新到葫芦0.17.0 :)
Calabash环境由客户端和服务器组成.服务器作为应用程序的一部分在设备/模拟器上运行,并从客户端接收命令/查询.在这种情况下,客户端是您通过其与应用程序交互的ruby界面.
客户端负责向服务器发送足够的信息以选择要在其上执行手势的对象.一旦执行了手势/查询,结果将以json/hashes的形式发送回客户端,这是您在控制台中看到的.区别很重要:服务器执行查询,而客户端则不执行.
当您在irb控制台中看到查询/手势的结果时,它已经被执行:返回的json只表示视图的状态,而不是实际的视图本身.
所以当你跑步的时候
touch("UITextField")[index]
这实际上相当于
touch_results = touch("UITextField") touch_results[index]
在第一行中,touch_results
接收受执行touch
查询结果影响的元素的json表示"UITextField"
,这意味着touch
在您尝试访问结果时事件已经完成touch_results[index]
.
另一种思考方式是:给定res = touch(query)
,它是query
用于指定实际视图的部分,并且res
只是json,表示查询或手势的那些视图/结果的状态.
当你需要查询更多的特异性,在符需要去里面查询.例如,
touch("all UIScrollView UITextField marked:'some text' index:2")
(这将搜索所有 UIScrollViews,在其中找到包含与"some text"匹配的文本的任何UITextFields,并返回第3个这样的结果).
有关查询语言语法的完整说明,请参阅文档.
尝试
touch("UITextField index:x")
哪里x == your index
.
另外,请更新到葫芦0.17.0 :)
Calabash环境由客户端和服务器组成.服务器作为应用程序的一部分在设备/模拟器上运行,并从客户端接收命令/查询.在这种情况下,客户端是您通过其与应用程序交互的ruby界面.
客户端负责向服务器发送足够的信息以选择要在其上执行手势的对象.一旦执行了手势/查询,结果将以json/hashes的形式发送回客户端,这是您在控制台中看到的.区别很重要:服务器执行查询,而客户端则不执行.
当您在irb控制台中看到查询/手势的结果时,它已经被执行:返回的json只表示视图的状态,而不是实际的视图本身.
所以当你跑步的时候
touch("UITextField")[index]
这实际上相当于
touch_results = touch("UITextField") touch_results[index]
在第一行中,touch_results
接收受执行touch
查询结果影响的元素的json表示"UITextField"
,这意味着touch
在您尝试访问结果时事件已经完成touch_results[index]
.
另一种思考方式是:给定res = touch(query)
,它是query
用于指定实际视图的部分,并且res
只是json,表示查询或手势的那些视图/结果的状态.
当你需要查询更多的特异性,在符需要去里面查询.例如,
touch("all UIScrollView UITextField marked:'some text' index:2")
(这将搜索所有 UIScrollViews,在其中找到包含与"some text"匹配的文本的任何UITextFields,并返回第3个这样的结果).
有关查询语言语法的完整说明,请参阅文档.