You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode录制Safari登录界面崩溃,XCUITest微软SSO测试仍遇崩溃问题

解决XCUITest跳转Microsoft SSO/Safari页面时Xcode崩溃的问题

我太懂这种挫败感了——明明Apple在Xcode 10的发布说明里说修复了跳转网页时Xcode崩溃的Bug,但升级到10.3甚至11.1还是遇到相同问题,连录制Safari登录测试都直接崩,这绝对是个棘手的小坑。结合我自己和社区里的经验,给你几个可以尝试的解决方案:

  • 关掉UI测试录制的自动截图
    很多时候,录制过程中Xcode自动截取Safari界面的操作会触发崩溃。你可以打开Xcode偏好设置(Xcode > Preferences > Behaviors),找到UI测试录制相关的行为选项,把自动截图的功能关掉,再试试录制操作。

  • 彻底清理Xcode的Derived Data缓存
    缓存损坏是这类莫名其妙崩溃的常见诱因,按以下步骤操作:

    1. 完全关闭Xcode
    2. 打开终端,执行命令:rm -rf ~/Library/Developer/Xcode/DerivedData
    3. 重新打开Xcode,先清理项目(快捷键Cmd+Shift+K),再重新构建并运行测试
  • 手动编写Safari交互代码,绕过录制功能
    既然录制会崩,不如直接手动写测试代码来处理SSO跳转逻辑,示例代码如下:

    // 切换到Safari应用
    let safariApp = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari")
    safariApp.activate()
    
    // 等待SSO登录页面加载完成,操作输入框
    let emailInput = safariApp.textFields["Email or phone"]
    XCTAssertTrue(emailInput.waitForExistence(timeout: 10))
    emailInput.typeText("your-test-account@domain.com")
    
    // 点击下一步按钮
    let nextBtn = safariApp.buttons["Next"]
    nextBtn.tap()
    
    // 后续密码输入、登录确认等操作可以参照这个逻辑编写
    

    另外要注意,如果你测试的SSO页面是HTTP协议,需要在测试目标的Info.plist中添加NSAllowsArbitraryLoads权限;如果是HTTPS则无需额外配置。

  • 检查Xcode与iOS设备的版本匹配度
    版本不兼容也可能导致这类问题,比如Xcode 11.1建议搭配iOS 13.x系列的设备测试,尽量保持Xcode和设备系统版本接近,避免跨大版本进行UI测试。

  • 尝试Xcode的Beta版本
    如果上面的方法都没效果,可以试试Apple最新的Xcode Beta版本,通常这类边缘场景的崩溃会在后续版本中得到修复。

内容的提问来源于stack exchange,提问作者Alok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:42:26