# FloatWindowOperations **Repository Path**: scenario-samples/float-window-operations ## Basic Information - **Project Name**: FloatWindowOperations - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-21 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Hypium框架实现对应用悬浮窗的操作 ## 场景介绍 对应用的悬浮窗进行移动、放大、缩小、以及切回大窗口等操作,是应用悬浮窗比较常用的场景。 本示例主要基于[DevEco Testing Hypium](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines) ,使用Python语言编写UI自动化测试脚本,对华为地图的悬浮窗进行测试。 ## 效果预览 ## 实现思路 1. 通过不同的key值去识别和操作小窗1.0和小窗2.0,如小窗1.0的key:SCBFloatMiniCoverStack,小窗2.0的key:floatingButtonMaximize、floatingButtonClose和SCBFloatTitleButton,获取到当前页面的控件树之后,可以根据查找key判断当前的小窗模式。 ```Python self.floating_key_list = ["SCBFloatMiniCoverStack", "floatingButtonMaximize", "floatingButtonClose", "SCBFloatTitleButton"] # 获取当前小窗状态下的控件树 self.driver.UiTree.dump_to_file("FloatWindow1.json") tree = WidgetTree(r"FloatWindow1.json") # 获取小窗1.0当前的mode mode, small_window_bundle_name = get_floating_mode(driver=self.driver, tree=tree, floating_key_list=self.floating_key_list) ``` 2. 通过swipe可以将应用全屏切换为小窗1.0,再次点击小窗即可切换为小窗2.0。 ```Python self.driver.swipe(UiParam.UP, 90, start_point=(0.99, 0.99)) self.driver.touch(BY.key("SCBFloatMiniCoverStack")) ``` 3. 根据当前小窗模式,可以进行对应的移动、放大、缩放、关闭操作。 ```Python # 基于小窗1.0可以进行移动、放大、缩放、关闭操作,对应action=0,1,2,3 Step("步骤3.基于小窗1.0进行移动到(100, 200)的操作") control_floating_window(driver=self.driver, mode=mode, small_window_bundle_name=small_window_bundle_name, action=0, location=(100, 200)) Step("步骤4.基于小窗1.0进行放大到全屏的操作") control_floating_window(driver=self.driver, mode=mode, small_window_bundle_name=small_window_bundle_name, action=1) self.driver.wait(3) Step("步骤5.从全屏再次切换回小窗1.0") self.driver.swipe(UiParam.UP, 90, start_point=(0.99, 0.99)) Step("步骤6.基于小窗1.0进行缩放到(497, 1732)的操作") control_floating_window(driver=self.driver, mode=mode, small_window_bundle_name=small_window_bundle_name, action=2, location=(497, 1732)) Step("步骤7.基于小窗1.0进行关闭") control_floating_window(driver=self.driver, mode=mode, small_window_bundle_name=small_window_bundle_name, action=3) ``` ## 说明 示例中使用的是华为地图应用,在执行用例前需要保证设备已安装此应用,运行过程中如果出现应用的控件发生了变化,需要进行适配。 ## 约束与限制 * 本示例支持API Version 20 Release及以上版本。 * 本示例推荐从PyCharm官网安装2022.3以后的社区版本。项目创建功能只支持2022.3至2025.1的PyCharm版本。2024.3版本由于PyCharm自身原因,只能选择单设备模板进行创建。 * 本示例基于DevEco Testing Hypium 6.0.7.202版本实现。 * 本示例基于华为地图5.8.0.308版本实现。 ## 工程目录 ``` ├── aw │ └── Utils.py // 示例模块文件 ├── config // 测试工程配置文件夹 │ └── user_config.xml // 测试工程配置文件 ├── resource // 测试资源文件夹 ├── testcases // 测试用例文件夹 │ ├── FloatWindowDemo.json // 测试用例配置文件,配置用例所需设备等参数 │ └── FloatWindowDemo.py // 测试用例文件 └── main.py // 测试用例执行入口文件 ``` ## 参考文档 [应用UI测试(基于Python)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines)