XCUIApplication().textFields["hiddenTextField"].typeText("input") on UITextField
Posted
技术标签:
【中文标题】XCUIApplication().textFields["hiddenTextField"].typeText("input") on UITextField with CGRectZero Frame【英文标题】: 【发布时间】:2018-03-07 05:26:03 【问题描述】:我的 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 类型
之前有没有人遇到过这种情况,您使用什么策略与测试中的 UI 进行交互?谢谢。
【问题讨论】:
这是一个非常非正统的 UI 设置。为什么不希望用户能够看到他们在文本字段中输入的内容? 用户仍然可以看到那里的输入。它只是映射到一个 UILabel,所以我们可以更好地控制它的外观。 【参考方案1】:根据 Apple 网站上的 documentation,只要键盘处于活动状态,您就可以对作为焦点响应者祖先的任何元素使用 typeText
方法:
元素或后代必须有键盘焦点;否则会引发错误。
鉴于上述情况,您应该能够使用以下内容在应用程序上简单地键入:
XCUIApplication().typeText("input")
【讨论】:
以上是关于XCUIApplication().textFields["hiddenTextField"].typeText("input") on UITextField的主要内容,如果未能解决你的问题,请参考以下文章
XCUIApplication 替换 UIATarget captureScreenWithName()
可以在调用 `XCUIApplication().terminate()` 后阻止 XCode 调用调试器
如何在 swift UITests 中的 XCUIApplication 中设置暗模式?