gpt4 book ai didi

ios - 无法触摸数组中的第二个元素

转载 作者:行者123 更新时间:2023-11-28 18:17:00 25 4
gpt4 key购买 nike

我正在尝试使用 Calabash 触摸 UITextField。当我使用 query("UITextField")[x] 时,其中 x 是屏幕上文本字段数组中的数字,我可以仅正确查询一个文本字段。但是,当我使用 touch("UITextField")[x] 时,它总是会触及第一个文本字段。使用控制台和使用 Cucumber 运行测试时会发生这种情况。

这是关于我的设置的相关信息:

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 == 你的索引

另外,请更新到 calabash 0.17.0 :)

说明

Calabash 环境由客户端和服务器组成。服务器作为应用程序的一部分在设备/模拟器上运行,并从客户端接收命令/查询。在这种情况下,客户端是您与应用程序交互的 ruby​​ 界面。

客户端负责向服务器发送足够的信息以选择执行手势的对象。执行手势/查询后,结果将以 json/哈希形式发送回客户端,这就是您在控制台中看到的内容。区别很重要:服务器执行查询,客户​​端不执行。

当您在 irb 控制台中看到查询/手势的结果时,它已经执行了:返回的 json 仅表示 View 的状态,不是实际的自己的看法。

所以当你运行的时候

touch("UITextField")[index]

这实际上等同于

touch_results = touch("UITextField")
touch_results[index]

在第一行中,touch_results 接收对 "UITextField" 的查询结果执行 touch 影响的元素的 json 表示>,这意味着当您尝试使用 touch_results[index] 访问结果时,touch 事件已经完成。

另一种思考方式是:给定 res = touch(query)query 是用于指定实际 View 的部分, res 只是 json,表示这些 View 的状态/查询或手势的结果。

总结

当您需要更具体的查询时,说明符需要进入查询内部。例如,

touch("all UIScrollView UITextField marked:'some text' index:2")

(这将搜索所有 UIScrollViews ,找到其中包含与'some text'<匹配的文本的任何UITextFields/em>,并返回第 3 个这样的结果)。

有关查询语言语法的完整说明,请参阅 the docs .

关于ios - 无法触摸数组中的第二个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com