2015-09-17 25 views
7

Sto usando il nuovo Xcode UI Testing da XCTest Framework con Xcode 7 GM. Ho un app con un semplice UIWebView (è solo un controller di navigazione + leggi di controllo con vista web e pulsante) e voglio controllare la seguente scenario: la pagina visualizazzione carichiTest di UIWebView con XI UI Testing

  1. Web rubinetti www.example.com
  2. utente su pulsante
  3. Web View carichi un po 'di pagina con URL: www.example2.com

voglio verificare che la pagina viene caricata in UIWebView dopo premendo il tasto. È possibile con UI Testing adesso?

In realtà mi sto vista web come questo:

let app:XCUIApplication = XCUIApplication() 
let webViewQury:XCUIElementQuery = app.descendantsMatchingType(.WebView) 
let webView = webViewQury.elementAtIndex(0) 

risposta

6

Non sarà in grado di dire che pagina viene caricata, come nel URL effettivo che viene visualizzato. Tuttavia, è possibile controllare che il contenuto sia visibile sullo schermo. UI Testing fornisce XCUIElementQuery per links that works great with both UIWebView and WKWebView.

Ricordare che una pagina non viene caricata in modo sincrono, quindi sarà necessario wait for the actual elements to appear.

let app = XCUIApplication() 
app.launch() 

app.buttons["Go to Google.com"].tap() 

let about = self.app.staticTexts["About"] 
let exists = NSPredicate(format: "exists == 1") 
expectationForPredicate(exists, evaluatedWithObject: about, handler: nil) 

waitForExpectationsWithTimeout(5, handler: nil) 
XCTAssert(about.exists) 

XCTAssert(app.staticTexts["Google Search"].exists) 
app.links["I'm Feeling Lukcy"].tap() 

C'è anche un working test host che va di pari passo con i due collegamenti se si vuole scavare nel codice.

3

Se il titolo delle pagine è diverso, è possibile verificare il titolo della pagina Web.

let app = XCUIApplication() 
app.launch() 
//Load www.example.com 

//Tap on some button  
app.links["Your button"].tap() 

//Wait for www.example2.com to load 
let webPageTitle = app.otherElements["Example2"] 
let exists = NSPredicate(format: "exists == 1") 
expectationForPredicate(exists, evaluatedWithObject: webPageTitle, handler: nil) 
waitForExpectationsWithTimeout(5, handler: nil) 
+0

questa è una grande idea, purtroppo ho un titolo. Ma forse qualcuno avrà una situazione diversa. Grazie! – Apan