使用Hypium实现ArkWeb自动化测试
=====================

#### 概述

ArkWeb页面支持使用Hypium集成Selenium框架、ChromeDriver驱动进行UI自动化测试。

#### 环境配置

1.Hypium环境搭建

参考：[应用UI测试（基于Python）](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines)。

2.安装Selenium

Selenium主要用于Web应用程序的自动化测试，核心功能是模拟用户在浏览器中的操作，例如点击按钮、输入文本、导航页面等。

pip install selenium

3.集成ChromeDriver驱动

ChromeDriver充当了Selenium WebDriver和Web页面之间的中介。通过Selenium发送命令时，ChromeDriver会将这些命令转换为Web内核能够理解的协议，并将响应返回给Selenium。ArkWeb基于谷歌Chromium内核开发，系统版本与Chromium版本的对应关系参考：ArkWeb简介[约束与限制](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/web-component-overview#约束与限制)。访问ChromeDriver官方网站[ChromeDriver下载|Chrome for Developers](https://developer.chrome.google.cn/docs/chromedriver/downloads?hl=zh-cn)，获取与Chromium版本对应的ChromeDriver。

首先将ChromeDriver集成到测试工程的resource文件夹下，然后调用WebDriverSetupTool类中的set\_chromedriver\_exe\_path方法指定chromedriver文件的存放路径或者调用set\_chromedriver\_exe\_search\_path方法指定chromedriver所在文件夹的路径。

self.web\_tools = WebDriverSetupTool(self.driver)
# 使用set\_chromedriver\_exe\_path指定chromedriver路径，需指定到对应版本的可执行chromedriver文件
self.web\_tools.set\_chromedriver\_exe\_path(r"D:\\WebAutoTest\\resource\\web\_debug\_tools\\chromedriver\_132\\chromedriver.exe")

self.web\_tools = WebDriverSetupTool(self.driver)
# 使用set\_chromedriver\_exe\_search\_path方法指定chromedriver所在文件夹，Hypium在指定的文件夹寻找对应版本的chromedriver文件
self.web\_tools.set\_chromedriver\_exe\_search\_path(r"D:\\WebAutoTest\\resource\\web\_debug\_tools")

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/7b/v3/0ZwqTgauTeOCUo1Vmg65tg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260709T132337Z&HW-CC-Expire=86400&HW-CC-Sign=FFF0DCB04BF40ADB0A72916293E5976A380D74C3C3FDB73A3185AFAC8A76D7AA)

*   使用set\_chromedriver\_exe\_search\_path方法指定chromedriver所在文件夹的路径时，下层文件夹命名规则为chromedriver\_版本号，参考下图。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/18/v3/Garx-MZfSZOX5Ig8J1cQuw/zh-cn_image_0000002664328107.png?HW-CC-KV=V1&HW-CC-Date=20260709T132337Z&HW-CC-Expire=86400&HW-CC-Sign=BAFCE4F789014E3DAD485715EC08A35D34F12FFD68A9A73153E5D4B8173B0D2E)
    

#### 示例代码

参考以下代码完成ArkWeb页面的自动化测试，先初始化Selenium的webdriver，后通过webdriver与Web页面交互的API，实现导航页面、查找页面元素操作。

webdriver更多使用方法参考Selenium官方文档：[驱动会话 | Selenium](https://www.selenium.dev/zh-cn/documentation/webdriver/drivers/)。

from devicetest.core.test\_case import TestCase, Step, CheckPoint
from hypium import UiDriver, BY
from hypium.webdriver.webdriver\_setup\_tool import WebDriverSetupTool

class ArkWeb\_AutoTests(TestCase):
    def \_\_init\_\_(self, configs):
        self.TAG = self.\_\_class\_\_.\_\_name\_\_
        TestCase.\_\_init\_\_(self, self.TAG, configs)
        self.driver = UiDriver(self.device1)
        self.driver\_width, self.driver\_height = self.driver.get\_display\_size()
        self.web\_tools = WebDriverSetupTool(self.driver)
        # 设置chromedriver存放路径
        self.web\_tools.set\_chromedriver\_exe\_search\_path(r"D:\\WebAutoTest\\resource\\web\_debug\_tools")
        # 使用应用包名连接到指定应用的webview页面
        self.web\_tools.connect("com.huawei.hmos.browser")
        # 初始化Selenium的webdriver
        self.web\_driver = self.web\_tools.driver

    def setup(self):
        pass
        
    def process(self):
        # 导航页面：使用Selenium的webdriver访问https://developer.huawei.com/网站
        self.web\_driver.get("https://developer.huawei.com/")
        # 查找页面元素：使用Selenium的webdriver查找页面ID为th的元素
        self.web\_driver.find\_element(BY.ID, "th")

    def teardown(self):
        # 使用结束需要调用webdriver\_setup\_tool中的close方法关闭web\_tools建立的连接
        self.web\_tools.close()