2017-08-13 29 views
1

我寫的測試UI測試案例以下UI enter image description here如何編寫XCUI測試是否導航到正確的屏幕?

我想測試上登錄點擊是否我儀表盤屏幕上瀏覽正確與否。

有沒有辦法做到這一點?

我目前的測試代碼是一樣

func testExample() { 

     let usernameTextField = app.textFields["Username"] 
     usernameTextField.tap() 
     usernameTextField.typeText("[email protected]") 

     let passwordTextField = app.textFields["Password"] 
     passwordTextField.tap() 
     passwordTextField.typeText("abc123") 

     app.buttons["Login" ].tap() 

       //let loginButton = app.staticTexts["Login"] 
       //XCTAssertEqual(loginButton.exists, true) 

     app.navigationBars["UIView"].buttons["Back"].tap() 


    } 

回答

0

嘗試增加一個輔助指標向後退按鈕使您可以檢查使用backButton.existsbackButton.hittable可用性和相應的斷言。在任何情況下,如果你設置

continueAfterFailure =假

安裝程序

(),因爲它是,如果它不與「後退」找到一個按鈕,您的測試將失敗。

+0

感謝answer..but我想測試用例像...如果我瀏覽到任何屏幕只是想測試一下,如果我是正確的屏幕上,或沒有與交互元素篩選......因爲後退按鈕可以在我不想瀏覽的屏幕上顯示 – sss

+0

這就是添加輔助功能標識符的原因,因此每個元素都是唯一可識別的 – pesch

+0

是否需要以編程方式添加輔助功能標識符,因爲在我的用戶界面中它是自動創建的,因爲我我正在使用導航控制器..因此我無法找到方法將故障診斷器標識符置入故事板 – sss

0

嘗試根據文本值時,該

app.buttons["Login - Login"].tap() 
    XCTAssertEqual(app.navigationBars.element.identifier, "appname.CalculationView") //If your second view controller is SecondViewController, your identifier is appname.SecondView.Like that my second view controller is CalculationViewController so my identifier is CalculationView 
0

UI測試可以變得非常脆弱。我鼓勵你做的是爲你的ViewController的view設置無障礙標識符。這樣,即使您更改標題或更改整個佈局,仍然可以確保您處於正確的Page/Screen/View中。

class DashVC: UIViewController { 
    override func viewDidLoad() { 
     view.accessibilityIdentifier = "view_dashboard" 
    } 
} 



    func test_login_withValidInput_goesDashBoard() { 
     let app = XCUIApplication() 

     //...  
     app.buttons["Login" ].tap() 

     let dashBoardView = app.otherElements["view_dashboard"] 
     let dashBoardShown = dashBoardView.waitForExistence(timeout: 5) 

     XCTAssert(dashBoardShown) 

    } 
+0

我覺得這還不夠回答/探索。我想建議你,修改你的答案,如果你可以分享它的屏幕截圖,那麼你也可以用適當的步驟來修改你的答案。 –

+0

我舉了一個例子來解釋我的觀點。 @阿肖克 - londhe –