Fastlane 声称会为我截取所有屏幕尺寸和本地化的屏幕截图。
根据指南,我创建了一个这样的 UI 测试用例:
override func setUp() {
super.setUp()
continueAfterFailure = false
setupSnapshot(XCUIApplication())
XCUIApplication().launch()
}
override func tearDown() {
super.tearDown()
}
func testExample() {
let app = XCUIApplication()
app.collectionViews.staticTexts["13"].swipeRight()
snapshot("calendar")
let staticText = app.collectionViews.staticTexts["26"]
staticText.tap()
snapshot("preview")
app.buttons["Editor"].tap()
snapshot("editor")
app.navigationBars["2016/6/26"].buttons["Cancel"].tap()
app.navigationBars["My Diaries"].buttons["search filled"].tap()
let tablesQuery = app.tables
tablesQuery.textFields["Search"].tap()
tablesQuery.textFields["Search"].typeText("beach")
snapshot("search")
app.navigationBars["Search"].buttons["search colored"].tap()
app.navigationBars["Results - 1 / 2"].buttons["right"].tap()
snapshot("result")
}
当我在英语模拟器中运行测试时,它成功了。当我在中文模拟器中运行测试时(我将我的应用程序本地化为中文。这就是我想用中文运行它的原因),测试不起作用,因为它在我的应用程序中找不到那些英文单词。
但是从指南来看,我想它会为我处理这个,使用NSLocalizedString
或类似的东西。
所以我cd
到项目目录,snapshot
然后选择一个目标,它开始截图......
...直到它到达应该点击“编辑器”按钮的部分,因为它找不到英文单词。它崩溃了。
那么我是否需要添加 if 语句来检查应用程序所在的本地化?那样做会很头疼!如果是这样的话,我宁愿自己截图。
我想我一定是误解了快车道。使用 Snapshot 截屏的正确方法是什么?