XCUIApplication()。textFields [“hiddenTextField”]。使用CGRectZero框架在UITextField上的typeText(“input”)

时间:2018-03-07 05:26:03

标签: objective-c xctest

我的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框架,因此自动化失败,并显示响应:

  

未找到匹配的匹配项:从输入

匹配类型TextField的Descendants

之前是否有人遇到此问题以及您使用过什么策略与测试中的UI进行交互?感谢。

1 个答案:

答案 0 :(得分:0)

根据Apple网站上的documentation,只要键盘处于活动状态,您就可以对作为焦点响应者祖先的任何元素使用typeText方法:< / p>

  

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

鉴于上述情况,您应该只需使用以下内容键入应用程序:

XCUIApplication().typeText("input")