IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS UITest之加载其他应用 -> 正文阅读

[移动开发]iOS UITest之加载其他应用

UI测试:加载其他应用

打开其他应用

我们可以通过 XCUIApplication 类来初始化自己应用和其他应用(通过包名)

其他系统应用 bundleid 参考iOS 删除自带应用

XCUIDevice

XCUIDevice 可以模拟设备的具体操作,比如点击 home 键、音量键等

返回 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来加载浏览器,可以测试加载网页、通用链接唤醒应用、深链接唤醒应用等。

网页加载测试

定义加载方法

    /// 打开浏览器 访问地址
    /// - Parameter url: 访问地址 url
    /// - Returns: 浏览器实例,以便获取后续元素和延迟处理
    /// - Important: go 按钮点击后,进入异步操作,可能会耗时较久,建议后续元素操作设置较大(50-60)超时时间,以免超时崩溃
    func openSafariInput(url:String) -> XCUIApplication {
        let safari = XCUIApplication.init(bundleIdentifier: "com.apple.mobilesafari")
        safari.launch()
        // 确保唤醒应用
        XCTAssert(safari.wait(for: .runningForeground, timeout: 5), "应该唤起浏览器")
        
        // 开新 tab,防止其他影响
        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["百度一下"] // 可以通过 safari.debugDescription 来查看元素进行验证
        XCTAssert(baidu.waitForExistence(timeout: 60), "应该加载百度主页") // 设置超长超时,避免没加载出页面导致测试异常
        //safari.terminate() // 关闭
    }

运行效果图如下:

Simulator Screen Recording - iPhone SE (2nd generation) - 2021-12-14 at 16.55.06

注意事项

  • 输入完地址后,请求是异步操作,可能会耗费较长时间,所以下一步操作应该将超时设置大一点。

  • 不同iOS版本浏览器样式可能不一样,搜索流程也可能不一样,所以需要根据打印元素层(xxx.debugDescription)来具体操作。

如何定位全局搜索?

我们可以通过滑动点到点触发搜索页面,但是通过打印 debugDescription 方法却没有 textfield 元素。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:24:43  更:2021-12-15 18:26:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:58:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码