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
相关产品推荐
相关产品推荐

