XCUIApplication().textFields[ "hiddenTextField" ].typeText( "input" ) on UITextField with CGRectZero



我的 iOS 应用程序有一个不可见的 UITextField 我用来捕获用户输入,然后将其显示在我自己的 UI 中。

UITextField *hiddenTextField;
hiddenTextField = [[UITextField alloc] initWithFrame:CGRectZero];
hiddenTextField.accessibilityIdentifier = @"hiddenTextField";
[hiddenTextField addTarget:self action:@selector(hiddenTextFieldValueChanged:) forControlEvents:UIControlEventValueChanged];
hiddenTextField.delegate = self;
[self.view addSubview:hiddenTextField];
[hiddenTextField becomeFirstResponder];

它按预期工作。我正在尝试用 Swift 编写自动化测试,其中包括对该字段的输入。

XCUIApplication().textFields["hiddenTextField"].typeText("input")

由于视图具有 CGRectZero 帧,因此自动化失败并显示响应:

未找到"查找"的匹配项:与输入中的文本字段类型匹配的子体

以前有没有人遇到过这种情况,你用什么策略与测试中的 UI 交互?谢谢。

根据 Apple 网站上的文档,只要键盘处于活动状态,您就可以对作为专注响应者的祖先的任何元素使用 typeText 方法:

元素或后代必须具有键盘焦点;否则将引发错误。

鉴于上述内容,您应该能够使用以下方法简单地在应用程序上键入:

XCUIApplication().typeText("input")

最新更新