使用 Xcode UI 测试测试 UIWebView
Testing UIWebView with Xcode UI Testing
我正在使用来自 XCTest Framework
的新 Xcode UI Testing
和 Xcode 7 GM
。我有一个带有简单 UIWebView 的应用程序(它只是一个导航控制器 + 带有 web 视图和按钮的视图控制器),我想检查以下场景:
- Web 视图加载页面
www.example.com
- 用户点击按钮
- Web 视图使用 URL 加载一些页面:
www.example2.com
我想检查按下按钮后 UIWebView 中加载了哪个页面。现在 UI 测试是否可行?
实际上我得到的网络视图是这样的:
let app:XCUIApplication = XCUIApplication()
let webViewQury:XCUIElementQuery = app.descendantsMatchingType(.WebView)
let webView = webViewQury.elementAtIndex(0)
您将无法分辨 加载了哪个 页面,就像显示的实际 URL 一样。但是,您可以检查断言内容是否在屏幕上。 UI 测试为 links that works great with both UIWebView
and WKWebView
提供 XCUIElementQuery
。
请记住,页面不会同步加载,因此您必须 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()
如果您想深入了解代码,还有一个 working test host 与这两个链接一起出现。
如果页面标题不一样,您可以查看网页标题。
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)
我正在使用来自 XCTest Framework
的新 Xcode UI Testing
和 Xcode 7 GM
。我有一个带有简单 UIWebView 的应用程序(它只是一个导航控制器 + 带有 web 视图和按钮的视图控制器),我想检查以下场景:
- Web 视图加载页面
www.example.com
- 用户点击按钮
- Web 视图使用 URL 加载一些页面:
www.example2.com
我想检查按下按钮后 UIWebView 中加载了哪个页面。现在 UI 测试是否可行?
实际上我得到的网络视图是这样的:
let app:XCUIApplication = XCUIApplication()
let webViewQury:XCUIElementQuery = app.descendantsMatchingType(.WebView)
let webView = webViewQury.elementAtIndex(0)
您将无法分辨 加载了哪个 页面,就像显示的实际 URL 一样。但是,您可以检查断言内容是否在屏幕上。 UI 测试为 links that works great with both UIWebView
and WKWebView
提供 XCUIElementQuery
。
请记住,页面不会同步加载,因此您必须 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()
如果您想深入了解代码,还有一个 working test host 与这两个链接一起出现。
如果页面标题不一样,您可以查看网页标题。
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)