跳至主要内容

从 v5 迁移到 v6

本教程适用于仍在使用 WebdriverIO v5 并希望迁移到 v6 或 WebdriverIO 最新版本的用户。正如我们在发布博文中提到的,此版本升级的更改可概括如下

  • 我们合并了一些命令的参数(例如 newWindowreact$react$$waitUntildragAndDropmoveTowaitForDisplayedwaitForEnabledwaitForExist),并将所有可选参数移动到单个对象中,例如:

    // v5
    browser.newWindow(
    'https://webdriverio.node.org.cn',
    'WebdriverIO window',
    'width=420,height=230,resizable,scrollbars=yes,status=1'
    )
    // v6
    browser.newWindow('https://webdriverio.node.org.cn', {
    windowName: 'WebdriverIO window',
    windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1'
    })
  • 服务的配置已移动到服务列表中,例如:

    // v5
    exports.config = {
    services: ['sauce'],
    sauceConnect: true,
    sauceConnectOpts: { foo: 'bar' },
    }
    // v6
    exports.config = {
    services: [['sauce', {
    sauceConnect: true,
    sauceConnectOpts: { foo: 'bar' }
    }]],
    }
  • 为了简化,一些服务选项已重命名

  • 对于 Chrome WebDriver 会话,我们将命令 launchApp 重命名为 launchChromeApp

信息

如果您使用的是 WebdriverIO v4 或更低版本,请先升级到 v5

虽然我们希望有一个完全自动化的过程,但现实情况并非如此。每个人都有不同的设置。每个步骤都应被视为指导,而不是一步一步的说明。如果您在迁移过程中遇到问题,请随时联系我们

设置

与其他迁移类似,我们可以使用 WebdriverIO codemod。要安装 codemod,请运行

npm install jscodeshift @wdio/codemod

升级 WebdriverIO 依赖项

鉴于所有 WebdriverIO 版本都紧密相关,因此最好始终升级到特定标签,例如 6.12.0。如果您决定直接从 v5 升级到 v7,您可以省略标签并安装所有软件包的最新版本。为此,我们将 package.json 中的所有与 WebdriverIO 相关的依赖项复制出来,并通过以下方式重新安装它们:

npm i --save-dev @wdio/allure-reporter@6 @wdio/cli@6 @wdio/cucumber-framework@6 @wdio/local-runner@6 @wdio/spec-reporter@6 @wdio/sync@6 wdio-chromedriver-service@6 webdriverio@6

通常 WebdriverIO 依赖项是开发依赖项的一部分,具体取决于您的项目,这可能会有所不同。之后,您的 package.jsonpackage-lock.json 应该会更新。**注意:**这些是示例依赖项,您的依赖项可能有所不同。确保通过调用(例如)找到最新的 v6 版本:

npm show webdriverio versions

尝试安装所有核心 WebdriverIO 包的最新可用 v6 版本。对于社区包,这可能因包而异。在这里,我们建议您查看更改日志以了解哪些版本仍与 v6 兼容。

转换配置文件

第一步是从配置文件开始。所有重大更改都可以使用 codemod 完全自动解决

npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./wdio.conf.js
注意

codemod 尚未支持 TypeScript 项目。请参阅@webdriverio/codemod#10。我们正在努力尽快实现对它的支持。如果您使用的是 TypeScript,请参与进来!

更新规范文件和页面对象

为了更新所有命令更改,请对包含 WebdriverIO 命令的所有 e2e 文件运行 codemod,例如:

npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./e2e/*

就是这样!无需进行其他更改🎉

总结

我们希望本教程能指导您完成 WebdriverIO v6 的迁移过程。我们强烈建议您继续升级到最新版本,因为由于几乎没有重大更改,升级到 v7 非常简单。请查看迁移指南以升级到 v7

社区在测试各种组织中各个团队的同时,不断改进 codemod。如果您有任何反馈,请随时提出问题,或者如果您在迁移过程中遇到困难,请开始讨论

欢迎!我如何帮助您?

WebdriverIO AI Copilot