我刚开始使用 XCTest 进行UI测试 在运行我的测试时,执行需要永远。
我得到以下输出:
Wait for app to idle - waits 120 seconds to fail
App animations complete notification not received, will attempt to continue.
我已经全神贯注地找到了关于如何更改超时或如何操纵应用程序以继续前进的零答案。
应用中根本没有运行任何动画。屏幕已满载。我的开发人员也没有答案,我尝试过禁用动画,这些动画完全没有通过测试。
关于如何解决这个问题的任何想法?
func testHomeScreen() {
logIn()
let home = app.navigationBars["HOME"].staticTexts["HOME"]
waitForElementToAppear(element: home)
XCTAssert(home.exists)
let myFriendsButton = app.buttons["My Friends"]
XCTAssert(myFriendsButton.exists)
let collectionViewsQuery = app.collectionViews
collectionViewsQuery.buttons["compose"].tap()
app.navigationBars["CREATE POST"].buttons["CANCEL"].tap()
collectionViewsQuery.buttons["photo"].tap()
app.navigationBars["PHOTO BOOTH"].buttons["CANCEL"].tap()
let element = collectionViewsQuery.children(matching: .cell).element(boundBy: 1).children(matching: .other).element
element.children(matching: .other).element(boundBy: 0).children(matching: .image).element(boundBy: 0).tap()
let profileCloseButton = app.buttons["profile close"]
profileCloseButton.tap()
let image = element.children(matching: .image).element
image.swipeUp()
let button = app.navigationBars["DETAILS"].buttons[" "]
let cell = collectionViewsQuery.children(matching: .cell).element(boundBy: 0)
cell.buttons["actionsheet"].tap()
app.sheets.buttons["Cancel"].tap()
cell.buttons["comment"].tap()
button.tap()
collectionViewsQuery.buttons["like selected"].tap()
这是我的LogIn功能和设置。
func logIn(){ 让app = XCUIApplication()
if app.tabBars.buttons["HOME"].exists {
logOut()
}
let logInButton = app.buttons["LOG IN"]
logInButton.tap()
let elementsQuery = app.scrollViews.otherElements
let emailField = elementsQuery.textFields["example@email.com"]
emailField.tap()
emailField.typeText("***************")
let passwordSecureTextField = elementsQuery.secureTextFields["Password"]
passwordSecureTextField.tap()
passwordSecureTextField.typeText("************")
app.navigationBars["LOG IN"].buttons["btn login"].tap()
if app.staticTexts["PLEASE TURN ON NOTIFICATIONS"].exists {
XCTAssert(app.staticTexts["This way you will be able to see when your friends post, message, like or comment on your stuff!"].exists)
app.buttons["NOT NOW"].tap()
}
if app.collectionViews.staticTexts["3D Rooms Now Available!"].exists {
XCTAssert(app.collectionViews.staticTexts["Chat with friends in 3D rooms wherever you go! Tap here to get started"].exists)
app.collectionViews.buttons["close"].tap()
}
if app.staticTexts["DAILY"].exists {
XCTAssert(app.staticTexts[" SPIN"].exists)
app.buttons["close"].tap()
}
}
设定:
class HomeScreenTests:XCTestCase { 让app = XCUIApplication()
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
app.launch()
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
以下是测试日志的一小部分输出: