UI测试:加载其他应用
打开其他应用
我们可以通过 XCUIApplication 类来初始化自己应用和其他应用(通过包名)
其他系统应用 bundleid 参考iOS 删除自带应用
XCUIDevice 可以模拟设备的具体操作,比如点击 home 键、音量键等
返回 Home
func toHome() {
XCUIDevice.shared.press(XCUIDevice.Button.home);
}
springboard 使用
可以通过com.apple.springboard 来加载系统页面。从而进行模拟主界面操作。
let springboard = XCUIApplication.init(bundleIdentifier: "com.apple.springboard")
springboard.launch()
下拉打开通知
在页面中选取两个点,然后通过拖动模拟滑动显示通知(Objective-c 可以,而 Swift 不能操作)。
- (void)openNotification{
XCUIApplication *app = self.springboard;
XCUICoordinate *coord1 = [app coordinateWithNormalizedOffset:CGVectorMake(0.1, 0.01)];
XCUICoordinate *coord2 = [app coordinateWithNormalizedOffset:CGVectorMake(0.1, 0.8)];
[coord1 pressForDuration:0.1 thenDragToCoordinate:coord2];
}
Safari 浏览器使用
可以通过com.apple.mobilesafari 来加载浏览器,可以测试加载网页、通用链接唤醒应用、深链接唤醒应用等。
网页加载测试
定义加载方法
func openSafariInput(url:String) -> XCUIApplication {
let safari = XCUIApplication.init(bundleIdentifier: "com.apple.mobilesafari")
safari.launch()
XCTAssert(safari.wait(for: .runningForeground, timeout: 5), "应该唤起浏览器")
safari.buttons["TabOverviewButton"].tap()
safari.buttons["Close"].tap()
let textfield = safari.textFields["Address"]
textfield.tap()
print("输入地址:\(url)")
textfield.typeText(url)
let goButton = safari.buttons["Go"]
goButton.tap()
sleep(1)
return safari
}
打开百度官网测试
func testOpenBaidu() {
let safari = openSafariInput(url: "https://www.baidu.com")
let baidu = safari.otherElements["百度一下"]
XCTAssert(baidu.waitForExistence(timeout: 60), "应该加载百度主页")
}
运行效果图如下:
注意事项
如何定位全局搜索?
我们可以通过滑动点到点触发搜索页面,但是通过打印 debugDescription 方法却没有 textfield 元素。
|