# VideoSearchAndPlay **Repository Path**: scenario-samples/video-search-and-play ## Basic Information - **Project Name**: VideoSearchAndPlay - **Description**: 视频搜索、视频播放控制是影音娱乐类应用的高频使用场景。 本示例基于DevEco Testing Hypium,使用Python语言编写UI自动化测试脚本,对华为视频的视频搜索和播放进行相关UI操作的测试。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频类应用的搜索和播放测试 ## 场景介绍 视频搜索、视频播放控制是影音娱乐类应用的高频使用场景。 本示例基于[DevEco Testing Hypium](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines),使用Python语言编写UI自动化测试脚本,对华为视频的视频搜索和播放进行相关UI操作的测试。 ## 效果预览 ## 实现思路 1. 使用driver.touch(BY.type("XXX"), mode="double")方法双击控件,进行暂停操作,再使用driver.find_component(BY.key("XXX")).getText()方法获取控件的文本进行时刻对比判断是否暂停成功。 ```Python # 双击播放控件暂停播放 self.driver.touch(BY.type("RelativeContainer"), mode="double") CheckPoint("检测点6.1.检查暂停暂停状态下,单击展示播控按钮是否一直展示") # 单击展示播控按钮 self.driver.touch(BY.type("RelativeContainer"), mode="normal") # 检查是否存在暂停按钮,如果是在播放状态,单击展示播控按钮,5秒后会自动隐藏;如果是在暂停状态,单击展示播控按钮后会一直显示 self.driver.wait(6) self.driver.check_component_exist(BY.type("SymbolGlyph").isBefore(BY.key('id/tv_port_current_time'))) CheckPoint("检测点6.2.检查暂停后等待3秒,查看2次的时刻是否一致") # 查看当前本集播放时刻 a = self.driver.find_component(BY.key("id/tv_port_current_time")).getText() # 等待3秒后,再次查看当前本集播放时刻 self.driver.wait(3) b = self.driver.find_component(BY.key("id/tv_port_current_time")).getText() # 对比两个时刻控件的text是否一致,不一致时打印当前未暂停 assert a == b, "当前未暂停" ``` 2. 借助long_click方法,press_time设置为长按时间来实现控件的长按操作,从而进行3X快进操作测试。 ```Python # 使用long_click方法,press_time设置为长按时间 self.driver.long_click(BY.type("RelativeContainer"), press_time=5) CheckPoint("检测点8.检查是否展示3X快进中文本") self.driver.check_component_exist(BY.text("3X 快进中")) ``` 3. 结合driver.start_listen_toast()和driver.get_latest_toast()方法,开启Toast监听,并获取最新的Toast消息内容来实现Toast类消息的测试。 ```Python # 开启Toast监听 self.driver.start_listen_toast() # 锁定情况进行返回操作,并toast提示“请点击锁屏图标解锁” self.driver.swipe_to_back() # 返回上次开启监听后最新的一条toast消息,如果没有消息则等待最多5秒直到新toast出现, 返回该toast的文本 text_in_toast = self.driver.get_latest_toast(timeout=3) # 检查获取的最后一次提示内容是否和"请点击锁屏图标解锁"一致 host.check_equal(text_in_toast, "请点击锁屏图标解锁") ``` 4. 对于一些自定义输入控件,input_text()方法无法进行字符输入,可以使用driver.press_key(KeyCode.键盘码)方法来直接输入字符。 ```Python # input_text()方法无效时,可以使用键盘码输入评论“hello" self.driver.press_key(KeyCode.H) self.driver.press_key(KeyCode.E) self.driver.press_key(KeyCode.L) self.driver.press_key(KeyCode.L) self.driver.press_key(KeyCode.O) ``` ## 说明 示例中使用的是华为视频应用,在执行用例前需要保证设备已安装此应用,运行过程中如果出现应用的控件发生了变化,需要进行适配。 ## 约束与限制 * 本示例支持API Version 17 Release及以上版本。 * 本示例推荐从PyCharm官网安装2022.3以后的社区版本。项目创建功能只支持2022.3至2025.1的Pycharm版本。2024.3版本由于pycharm自身原因,只能选择单设备模板进行创建。 * 本示例基于DevEco Testing Hypium 6.0.6.210版本实现。 * 本示例基于华为视频1.0.90.301版本实现。 ## 工程目录 ```markdown ├── config // 测试工程配置文件夹 │ └── user_config.xml // 测试工程配置文件 ├── resource // 测试资源文件夹 ├── testcases // 测试用例文件夹 │ ├── VideoSearchAndPlayDemo.json // 测试用例配置文件,配置用例所需设备等参数 │ └── VideoSearchAndPlayDemo.py // 测试用例文件 └── main.py // 测试用例执行入口文件 ``` ## 参考文档 [应用UI测试(基于Python)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines)