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

QAF切换Web与Mobile驱动时无法并行保留驱动实例问题求助

QAF框架跨Web/Mobile驱动切换实例销毁问题解决方案

问题根因

  • 切换驱动的逻辑中动态修改了全局的remote.server属性,QAF切换驱动时会校验配置一致性,当发现已缓存的驱动配置和当前全局配置存在差异时,会触发旧驱动销毁逻辑,不会保留实例。同类型Web浏览器切换时没有修改配置,所以实例可以正常缓存。
  • Appium驱动与Web驱动的driverClass属于不同实现类,若没有独立配置各驱动的专属参数,QAF会判定为配置不兼容,触发销毁动作。

修复方案

步骤1:调整配置文件,将各驱动参数独立配置

不要共用全局的remote.server属性,给每个驱动单独配置专属参数,同时开启驱动缓存,在properties配置文件中添加/修改如下内容:

# 开启驱动实例缓存
driver.cache.enabled=true
# 禁止切换会话时自动销毁旧驱动
driver.quit.on.session.change=false

# Chrome浏览器专属配置
chromeRemoteDriver.capabilities.remote.server=https://browserstack/xxxx
chrome.additional.capabilities={'name': 'Chrome - Test Run','browserName': 'chrome', 'browserVersion': '89.0' }

# Firefox浏览器专属配置
firefoxRemoteDriver.capabilities.remote.server=https://browserstack/xxxx
# 其他Firefox相关配置按需补充

# Appium驱动专属配置
appiumDriver.capabilities.remote.server=https://experitest/xxxx
appium.capabilities.accessKey=asdljj.sdasdad.asdasdasd.asd
appium.capabilities.uuid=asdsd23424
appium.capabilities.platformName=android
appium.capabilities.app=cloud:com.xxxx.xxx/.LoginActivity
appium.capabilities.instrumentApp=true
appium.capabilities.appPackage=com.xxx.xxx
appium.capabilities.appActivity=com.xxx.xxx.LoginActivity
appium.capabilities.driverClass=io.appium.java_client.android.AndroidDriver

步骤2:简化自定义切换驱动逻辑

删除动态修改全局配置的代码,直接调用原生switchDriver方法即可:

@QAFTestStep(description = "I switch driver {drivername}") 
public static void iSwitchDriver(String drivername) {
    switchDriver(drivername); 
}

调整完成后重新执行测试,切换Web与Mobile驱动时不会再打印UI-driver tear down complete日志,原有驱动实例会被缓存保留,可随时切换复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:15:03