当我在启用并行执行的情况下运行UI测试时,会创建现有模拟器(例如- iPad Air 2)的多个克隆,以运行不同的测试套件。
在Run Script from this StackOverflow answer中,我注入了一个PLIST键"ConnectHardwareKeyboard“,其值为false,以禁用硬件键盘连接,该连接在启动模拟器时默认是启用的:Hardware -> Keyboard -> Connect Hardware Keyboard
此脚本将为现有模拟器(iPad Air 2)正确设置值,但当测试并行执行时,将创建iPad Air 2的多个克隆,并且克隆的plists不是原始设备的克隆。克隆设备列表中根本没有设置任何标志,但硬件连接键盘->连接硬件键盘显示为选中状态。
这会导致我的UI测试失败,因为在文本字段中键入test后,当我试图关闭键盘时,键盘丢失了。
我浏览了StackOverflow和苹果开发者论坛上的许多帖子,试图解决这个问题,但没有找到任何东西。这对其他人来说肯定是个问题。有没有人遇到过同样的问题和/或找到了解决方案?
发布于 2019-06-26 01:40:08
像你一样,我在互联网上寻找这个问题的优雅解决方案,但还没有找到。
因此,在比我聪明得多的人弄清楚这一点之前,我在我的测试中实现了以下内容:
import Foundation
import XCTest
extension XCUIApplication {
//Hardware keyboard makes tests fail. Reporting from these failures is ambiguous. This function is intended to fix that issue (for now, until we figure out something better)
public func keyboardReadyCheck() {
if !self.keys["S"].waitForExistence(timeout: 3) {
XCTFail("The software keyboard could not be found. Use Xcode Simulator settings to turn off hardware keyboard (Keyboard shortcut COMMAND + SHIFT + K while simulator has focus)")
}
}
}这允许我在整个测试过程中使用XCUIApplication.keyboardReadyCheck,如果打开了硬件键盘,就会立即导致失败。
这不是一个很好的解决方案,但它比看着整个套件运行并在它找不到的愚蠢的东西上超时,然后报告"target not hittable“或"element not find”要快得多,然后我必须弄清楚发生了什么。
https://stackoverflow.com/questions/53229209
复制相似问题