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

使用WebdriverIO+Cucumber进行移动APP自动化测试时遭遇TypeError: this[#browser].sessionSubscribe is not a function错误

WebdriverIO+Cucumber进行移动APP自动化测试时遭遇TypeError: this[#browser].sessionSubscribe is not a function错误

我完全理解你遇到这个问题的挫败感——明明已经尝试更新依赖,却还是碰到这种奇怪的方法不存在的错误,确实让人头疼。咱们来一步步拆解问题,找到解决办法:

问题根源分析

这个sessionSubscribe is not a function错误,几乎可以确定是WebdriverIO核心库与Cucumber测试框架的版本兼容性不匹配导致的。从你的package.json来看,你用的是WebdriverIO v9.7.3,但搭配了@cucumber/cucumber v11.2.0,而WebdriverIO v9.x版本的@wdio/cucumber-framework并不兼容Cucumber v11的API,这就导致了内部方法调用失败。

具体解决方案

1. 调整Cucumber依赖版本

把@cucumber/cucumber的版本降级到和WebdriverIO v9.x兼容的范围,官方推荐的是^10.x版本。修改你的package.json:

{
  // ...其他内容
  "devDependencies": {
    "@cucumber/cucumber": "^10.8.0",
    "@wdio/cucumber-framework": "^9.7.3",
    // ...其他依赖
  },
  "overrides": {
    "@cucumber/cucumber": "^10.8.0"
  }
}

2. 清理并重新安装依赖

为了彻底消除版本缓存和冲突,执行以下步骤:

# 删除依赖文件夹和锁文件
rm -rf node_modules yarn.lock
# 重新安装依赖
yarn install

3. 验证配置文件正确性

确保你的WDIO配置文件(比如wdio.android.app.conf.js)里的框架配置没有问题:

exports.config = {
  // ...其他配置项
  framework: 'cucumber',
  cucumberOpts: {
    require: ['./test/step-definitions/**/*.js'], // 步骤定义文件路径
    feature: ['./test/features/**/*.feature'], // 用例文件路径
    // 其他Cucumber配置保持符合v10.x的要求
  }
}

4. 排查潜在依赖冲突

如果调整版本后仍有问题,可以用命令查看是否有其他依赖偷偷引入了不兼容的Cucumber版本:

yarn why @cucumber/cucumber

如果发现有其他依赖拉取了v11版本,可以通过overrides字段强制锁定到v10.x(你已经在package.json里加了overrides,确保这里的版本和devDependencies里一致即可)。

总结

版本不兼容是这类错误的核心原因,只要把Cucumber版本降到和WebdriverIO v9匹配的范围,再清理重新安装依赖,这个sessionSubscribe的问题应该就能解决。如果还是有问题,可以尝试把所有WebdriverIO相关依赖(比如@wdio/local-runner、@wdio/cucumber-framework等)都锁定到同一个v9.x的小版本,进一步减少版本差异带来的问题。

备注:内容来源于stack exchange,提问作者Karthik Peddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:44:35