我想知道是否有一种方法可以在swift UITests项目中为XCUIApplication设置暗模式。
我需要在同一测试中以亮模式和暗模式启动应用程序。在方案中将其设置为硬编码值将不起作用,或者从外部入侵模拟器也不起作用(出于性能和可维护性等原因)。
目前我设置启动参数如下:
let app = XCUIApplication()
var launchArguments: [AnyHashable] = []
launchArguments.append("-AppleLanguages")
launchArguments.append(langCode)
launchArguments.append("-AppleLocale")
launchArguments.append(localeCode)
app.launchArguments = launchArguments
app.launch()
而且效果很好。
如何为XCUIApplication示例设置暗模式?
我所做的:
- 在Apple Development Docs上进行广泛搜索。
- StackOverflow只展示了如何在Xcode中的scheme中硬编码,或者如何通过杀死模拟器,擦除它,并破解plist值来从外部破解模拟器。
感谢您的任何帮助!
4条答案
按热度按时间dauxcl2d1#
我对这个问题也很感兴趣,因为我正在使用UI测试来使用Fastlane进行屏幕截图。目标是能够在亮模式和暗模式之间切换,以进行对同一目标的不同测试。
RobLabs提供的解决方案似乎在Xcode 11.4 / iOS 13.4上不适用。我不确定这是否符合您的要求,但我使用了自定义启动参数,然后在SceneDelegate中设置接口样式,仅用于调试构建:
在您的测试中:
在SceneDelegate.swift中:
现在您的测试在黑暗模式下运行。
w8f9ii692#
在macOS中,您可以从Terminal.app发出以下命令
它的React是
黑暗
在您的
XCTestCase
中,这应该可以工作从Xcode 11.4 Beta开始更新
现在可以在模拟器中切换外观。这是测试Map和其他黑暗模式功能的好方法。
模拟器支持切换iOS模拟器(13.0及更高版本)的外观。从应用程序中选择Debug > Toggle Appearance。在命令行中使用
simctl ui
子命令,例如设置暗外观9gm1akwq3#
这是我的方法,目前正在Patrol testing framework中使用。只有当设备的语言设置为英语时才有效(我只测试了美国地区)。
a0x5cqrl4#
截至iOS 15+:
不要忘记恢复颜色: