首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行执行Xcode 10 UI测试时禁用模拟器的连接硬件键盘设置

并行执行Xcode 10 UI测试时禁用模拟器的连接硬件键盘设置
EN

Stack Overflow用户
提问于 2018-11-10 00:00:25
回答 1查看 1.7K关注 0票数 12

当我在启用并行执行的情况下运行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和苹果开发者论坛上的许多帖子,试图解决这个问题,但没有找到任何东西。这对其他人来说肯定是个问题。有没有人遇到过同样的问题和/或找到了解决方案?

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 01:40:08

像你一样,我在互联网上寻找这个问题的优雅解决方案,但还没有找到。

因此,在比我聪明得多的人弄清楚这一点之前,我在我的测试中实现了以下内容:

代码语言:javascript
复制
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”要快得多,然后我必须弄清楚发生了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53229209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档