如何以编程方式点击iOS键盘上的某个点

如何以编程方式点击iOS键盘上的某个点,ios,objective-c,kif-framework,Ios,Objective C,Kif Framework,我正在使用它来自动化我的应用程序,我正在尝试将某些内容自动输入到ui搜索栏并搜索它。不幸的是,在输入搜索文本后,通过编程单击搜索按钮,我找不到一个方法来实现这一点 因此,我考虑简单地使用KIF的方法。该方法的问题在于它执行以下操作: CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil]; view = [window hitTest:windowPoint withEvent:nil]; 它期望水龙头能真正接触

我正在使用它来自动化我的应用程序,我正在尝试将某些内容自动输入到
ui搜索栏
并搜索它。不幸的是,在输入搜索文本后,通过编程单击搜索按钮,我找不到一个方法来实现这一点

因此,我考虑简单地使用KIF的方法。该方法的问题在于它执行以下操作:

CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil];
view = [window hitTest:windowPoint withEvent:nil];
它期望水龙头能真正接触到一个视图。。而且,由于键盘显然不是视图,因此该测试无法触发键盘上的搜索按钮


如何以编程方式点击键盘上的按钮?我认为这对于任何自动化测试套件都是非常有用的。

听起来好像您正在尝试点击键盘上的“搜索”按钮。返回键上的辅助功能标签不遵循任何类型的正常模式。查看可访问性检查器,您将看到“搜索”,但这在所有操作系统版本上可能不一致

更新

您可以通过将
\n
添加到
输入文本…

[tester enterTextIntoCurrentFirstResponder:@"query\n"];

听起来好像你正试图点击键盘上的“搜索”按钮。返回键上的辅助功能标签不遵循任何类型的正常模式。查看可访问性检查器,您将看到“搜索”,但这在所有操作系统版本上可能不一致

更新

您可以通过将
\n
添加到
输入文本…

[tester enterTextIntoCurrentFirstResponder:@"query\n"];

正确的方法是使用:

[tester ClearTextFromand and thentertext:@“sample test”intoViewWith AccessibilityLabel:@“SearchField”]

[tester waitForViewWithAccessibilityLabel:@“搜索]

[tester tapViewWithAccessibilityLabel:@“搜索”]

返回键的辅助功能标签为“搜索”。在这种情况下,您可以使用辅助功能检查器应用程序进行验证

但要小心,如果添加以大写字母结尾的文本,则不会按下“返回键”(search/done/return/which),例如:

“样本测试”

即使您尝试使用“tapScreenAtPoint”方法,也会按下“shift”按钮,而不会按下“return”按钮


这件事发生在我身上,让我疯狂了很长一段时间,直到我弄明白到底发生了什么。

正确的方法是使用:

[tester ClearTextFromand and thentertext:@“sample test”intoViewWith AccessibilityLabel:@“SearchField”]

[tester waitForViewWithAccessibilityLabel:@“搜索]

[tester tapViewWithAccessibilityLabel:@“搜索”]

返回键的辅助功能标签为“搜索”。在这种情况下,您可以使用辅助功能检查器应用程序进行验证

但要小心,如果添加以大写字母结尾的文本,则不会按下“返回键”(search/done/return/which),例如:

“样本测试”

即使您尝试使用“tapScreenAtPoint”方法,也会按下“shift”按钮,而不会按下“return”按钮


这件事发生在我身上,让我疯狂了很长一段时间,直到我弄明白到底发生了什么。

非常有趣。。但是,您上面的代码不起作用(尽管我认为它应该起作用)。。上面的
not enabled
可能与此有关吗?我假设一旦输入文本,文本字段就失去了not enabled特征,不应该成为问题。您可以尝试添加
\n
作为
enterText:…
中的最后一个字符,以查看是否会触发它。非常好!
\n
技巧成功了!请你更新你的答案,拿出
@“搜索”
这东西b/c它不起作用(我们不想误导人们,是吗?)和一张便条。。是否有明确的方法等待搜索结果出现在表上?现在我只是让它等待一些随机的时间,比如:`[self-EntertTextInCurrentFirstResponder:@“tripoli\n”];[自我等待时间:4.2];[self-TapRowatingIndexPath:[NSIndexPath indexPathForRow:0第0节]IntableViewWith AccessibilityIdentifier:KMatableIdentifier];`。。有更精确的方法吗?上述方法非常脆弱。。有时有效,有时无效。。取决于互联网的速度,这很有趣。。但是,您上面的代码不起作用(尽管我认为它应该起作用)。。上面的
not enabled
可能与此有关吗?我假设一旦输入文本,文本字段就失去了not enabled特征,不应该成为问题。您可以尝试添加
\n
作为
enterText:…
中的最后一个字符,以查看是否会触发它。非常好!
\n
技巧成功了!请你更新你的答案,拿出
@“搜索”
这东西b/c它不起作用(我们不想误导人们,是吗?)和一张便条。。是否有明确的方法等待搜索结果出现在表上?现在我只是让它等待一些随机的时间,比如:`[self-EntertTextInCurrentFirstResponder:@“tripoli\n”];[自我等待时间:4.2];[self-TapRowatingIndexPath:[NSIndexPath indexPathForRow:0第0节]IntableViewWith AccessibilityIdentifier:KMatableIdentifier];`。。有更精确的方法吗?上述方法非常脆弱。。有时有效,有时无效。。根据互联网速度的不同,这是一个比编程新行更好的答案。这是一个比编程新行更好的答案。