You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓自动化测试中如何将Appium driver实例在不同类之间传递

安卓自动化测试多类共享Driver实例最优实现方案

核心实现思路是单例模式封装Driver实例,既可以避免重复初始化Driver导致的应用反复重启,也能保证全测试生命周期内所有类调用的是同一个可用Driver实例,具体实现步骤如下:

  • 第一步:修改setup类的Driver生成逻辑,用单例规则管控实例
    以下为Python语言示例,Java/JS等其他语言实现逻辑完全一致:
    from appium import webdriver
    from appium.options.android import UiAutomator2Options
    
    class DriverManager:
        _driver = None
    
        @classmethod
        def get_driver(cls):
            # 仅当实例未初始化时才执行创建逻辑
            if cls._driver is None:
                # 此处替换为你自己的capabilities配置
                caps = UiAutomator2Options()
                caps.platform_name = "Android"
                caps.device_name = "测试设备"
                caps.app_package = "目标应用包名"
                caps.app_activity = "目标应用启动页Activity"
                caps.no_reset = True
                cls._driver = webdriver.Remote("http://127.0.0.1:4723", options=caps)
            return cls._driver
    
        @classmethod
        def quit_driver(cls):
            # 测试结束后统一销毁实例,避免进程残留
            if cls._driver is not None:
                cls._driver.quit()
                cls._driver = None
    
  • 第二步:所有页面对象类、测试用例类统一调用封装好的get_driver()方法获取实例,不要单独执行Driver初始化逻辑
    示例页面类实现:
    # 登录页面对应类
    class LoginPage:
        def __init__(self):
            # 直接获取全局唯一的Driver实例
            self.driver = DriverManager.get_driver()
    
        def input_account(self, account):
            self.driver.find_element(By.ID, "account_input").send_keys(account)
    
    # 首页对应类
    class HomePage:
        def __init__(self):
            # 和登录类拿到的是同一个Driver实例
            self.driver = DriverManager.get_driver()
    
        def check_top_banner(self):
            return self.driver.find_element(By.ID, "home_banner").is_displayed()
    
  • 第三步:如果使用Pytest/TestNG等测试框架,可将get_driver()和quit_driver()逻辑放到全局fixture、BeforeSuite/AfterSuite钩子中,适配多用例执行、并发执行场景时只需基于单例逻辑增加进程隔离规则即可。

注意:不要在业务类中直接修改Driver实例的属性、不要在非测试结束阶段调用quit方法,避免实例异常失效。

内容的提问来源于stack exchange,提问作者rakeshsahu59

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:54:06