无法触摸数组中的第二个元素
Can't touch second element in array
我正在尝试使用 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
尝试
touch("UITextField index:x")
其中 x == your index
.
此外,请更新至 calabash 0.17.0 :)
说明
Calabash 环境由客户端和服务器组成。服务器作为应用程序的一部分在 device/simulator 上运行,并从客户端接收 commands/queries。在这种情况下,客户端是 ruby 界面,您通过该界面与应用程序进行交互。
客户端负责向服务器发送足够的信息给 select 执行手势的对象。一旦执行了手势/查询,结果将作为 json / 哈希发送回客户端,这就是您在控制台中看到的。区别很重要:服务器执行查询,客户端不执行。
当您在 irb 控制台中看到查询/手势的结果时,它已经执行了:json 即 returned 仅表示视图的状态,不是实际观点本身。
所以当你 运行
touch("UITextField")[index]
这实际上等同于
touch_results = touch("UITextField")
touch_results[index]
在第一行中,touch_results
正在接收受对 "UITextField"
的查询结果执行 touch
影响的元素的 json 表示,这意味着当您尝试使用 touch_results[index]
访问结果时,touch
事件已经完成。
另一种思考方式是:给定 res = touch(query)
,query
是用于指定实际视图的部分,而 res
只是 json表示这些视图的状态/查询或手势的结果。
总结
当您需要更具体的查询时,说明符需要进入查询内部。例如,
touch("all UIScrollView UITextField marked:'some text' index:2")
(这将搜索 all UIScrollViews ,找到其中的任何 UITextFields包含文本匹配 'some text' 和 return 第三个这样的结果)。
有关查询语言语法的完整说明,请参阅 the docs。
我正在尝试使用 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
尝试
touch("UITextField index:x")
其中 x == your index
.
此外,请更新至 calabash 0.17.0 :)
说明
Calabash 环境由客户端和服务器组成。服务器作为应用程序的一部分在 device/simulator 上运行,并从客户端接收 commands/queries。在这种情况下,客户端是 ruby 界面,您通过该界面与应用程序进行交互。
客户端负责向服务器发送足够的信息给 select 执行手势的对象。一旦执行了手势/查询,结果将作为 json / 哈希发送回客户端,这就是您在控制台中看到的。区别很重要:服务器执行查询,客户端不执行。
当您在 irb 控制台中看到查询/手势的结果时,它已经执行了:json 即 returned 仅表示视图的状态,不是实际观点本身。
所以当你 运行
touch("UITextField")[index]
这实际上等同于
touch_results = touch("UITextField")
touch_results[index]
在第一行中,touch_results
正在接收受对 "UITextField"
的查询结果执行 touch
影响的元素的 json 表示,这意味着当您尝试使用 touch_results[index]
访问结果时,touch
事件已经完成。
另一种思考方式是:给定 res = touch(query)
,query
是用于指定实际视图的部分,而 res
只是 json表示这些视图的状态/查询或手势的结果。
总结
当您需要更具体的查询时,说明符需要进入查询内部。例如,
touch("all UIScrollView UITextField marked:'some text' index:2")
(这将搜索 all UIScrollViews ,找到其中的任何 UITextFields包含文本匹配 'some text' 和 return 第三个这样的结果)。
有关查询语言语法的完整说明,请参阅 the docs。