【问题标题】:how to programmatically tap a point on the iOS keyboard如何以编程方式点击 iOS 键盘上的一个点
【发布时间】:2013-09-30 08:44:01
【问题描述】:

我正在使用KIF 来自动化我的应用程序,并且我正在尝试自动在UISearchBar 中输入一些内容并进行搜索。不幸的是,在我输入搜索文本后,我无法通过以编程方式单击搜索按钮来找到satisfactory way

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

CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil];
view = [window hitTest:windowPoint withEvent:nil];

它期望点击实际触摸视图..由于键盘显然不是视图,因此该测试将无法触发键盘上的搜索按钮。

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

【问题讨论】:

    标签: ios objective-c kif-framework


    【解决方案1】:

    正确的使用方法是:

    [tester clearTextFromAndThenEnterText:@"sample test" intoViewWithAccessibilityLabel:@"SearchField"];

    [tester waitForViewWithAccessibilityLabel:@"search"];

    [tester tapViewWithAccessibilityLabel:@"search"];

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

    但请注意,如果您要添加以大写字母结尾的文本,则不会按下“返回键”(搜索/完成/返回/任何内容),例如:

    “样品测试”

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

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

    【讨论】:

    • 这是一个比程序化换行更好的答案。
    【解决方案2】:

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

    更新

    您可以通过将\n 添加到您的enterText... 来触发搜索按钮

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

    【讨论】:

    • 非常有趣.. 但是您上面的代码不起作用(尽管我认为它应该).. 上面的not enabled 可以与它​​有关吗?
    • 我假设一旦输入文本,文本字段就会失去 Not Enabled 特征,这应该不是问题。您可以尝试将\n 添加为enterText:... 中的最后一个字符,看看是否会触发它。
    • 太棒了! \n 把戏奏效了!您能否更新您的答案并取出 @"SEARCH" thingie b/c 它不起作用(我们不想误导人们吗?)
    • 还有一个附注.. 是否有明确的方法可以等待搜索结果出现在桌面上?现在我只是让它等待一些随机时间,如下所示:` [self enterTextIntoCurrentFirstResponder:@"tripoli\n"]; [自我等待时间间隔:4.2]; [self tapRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] inTableViewWithAccessibilityIdentifier:kMapTableIdentifier];`..有更精确的方法吗?
    • b/c 上面的做法很脆弱..有时有效,有时无效..取决于网速
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多