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

如何在XCUITest中设置OSX应用主窗口的大小?

在XCUITest中设置macOS(OSX)应用主窗口固定大小的方案

你可以直接通过XCTest的窗口元素API直接设置固定frame,操作逻辑如下:

  1. 优先在测试用例初始化阶段完成窗口尺寸设置,再执行后续业务操作和截图
  2. 可同步固定窗口位置,避免窗口位移导致的截图内容偏移

代码示例

import XCTest

class SnapshotTestBase: XCTestCase {
    let testApp = XCUIApplication()
    
    override func setUpWithError() throws {
        continueAfterFailure = false
        // 可选:添加启动参数,禁用应用原有窗口状态记忆,避免设置的尺寸被覆盖
        testApp.launchArguments.append("-ApplePersistenceIgnoreState")
        testApp.launchArguments.append("YES")
        testApp.launch()
        
        // 获取应用主窗口实例
        let mainWindow = testApp.windows.firstMatch
        // 定义你需要的固定尺寸,可根据快照要求自定义
        let fixedSize = CGSize(width: 1280, height: 800)
        // 可选:固定窗口左上角在屏幕原点,避免位置偏移
        let fixedOrigin = CGPoint(x: 0, y: 0)
        
        // 如果应用默认启动是全屏状态,先退出全屏再调整大小
        if mainWindow.buttons[XCUIIdentifierFullScreenWindow].exists {
            mainWindow.buttons[XCUIIdentifierFullScreenWindow].click()
        }
        // 应用固定窗口尺寸和位置
        mainWindow.setFrame(CGRect(origin: fixedOrigin, size: fixedSize))
    }
    
    func testHomePageSnapshot() throws {
        // 你的业务测试逻辑
        // 执行截图
        let pageScreenshot = testApp.screenshot()
        let attach = XCTAttachment(screenshot: pageScreenshot)
        attach.lifetime = .keepAlways
        add(attach)
    }
}

注意事项

  • 如果你使用第三方快照测试库(比如SnapshotTesting),建议在快照配置处同步指定固定的截图尺寸,和窗口设置保持一致,双重保障每次输出尺寸完全相同
  • 截图前确认没有弹窗、悬浮视图等遮挡主窗口,避免截图范围被自动裁剪
  • 如果你的应用有多窗口逻辑,需要精准指定你要截图的窗口ID,不要直接用firstMatch避免取错窗口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:06:01