如何在WebdriverIO独立脚本中使用expect断言?
问题解答
1. 独立脚本(无三大测试框架)使用expect断言的方法
可以直接使用,不需要依托mocha/jasmine/cucumber框架,操作步骤如下:
- 首先安装依赖包:
npm install @wdio/expect-webdriverio - 在独立脚本中手动注册断言匹配器,绑定当前browser实例即可使用,修改后的示例代码如下:
const { remote } = require('webdriverio'); const { expect } = require('@wdio/expect-webdriverio'); ;(async () => { const browser = await remote({ capabilities: { browserName: 'chrome' }, // 配置断言默认超时时间,单位毫秒 waitforTimeout: 5000 }) // 绑定browser实例到expect expect.setOptions({ browser }) await browser.url('https://webdriver.io') const apiLink = await browser.$('=API') await apiLink.click() // 直接使用自带等待的断言 await expect(browser).toHaveTitle('API · WebdriverIO') const footer = await browser.$('.footer__links') await expect(footer).toHaveTextContaining('Get Started') await browser.saveScreenshot('./screenshot.png') await browser.deleteSession() })()
2. 依托三大测试框架的配置方法
如果使用官方脚手架npx wdio创建项目,初始化过程中选择对应测试框架后,会自动完成所有集成配置,无需额外操作,断言方法直接挂载到全局可直接调用。
如果是手动搭建的测试框架项目,只需要两步配置:
- 安装
@wdio/expect-webdriverio依赖 - 在测试框架的全局before钩子中调用
expect.setOptions({ browser })绑定实例,同时将expect挂载到全局对象即可。
3. 断言自动等待特性说明
纯mocha/jasmine/cucumber本身不支持该自动等待特性,这个特性是@wdio/expect-webdriverio包提供的能力,和你使用的上层测试框架无关。只要你正确集成了该依赖包,不管用什么测试框架,都可以享受到断言自动等待的效果,超时时间默认读取WDIO配置中的waitforTimeout参数,默认值为5000毫秒。
内容的提问来源于stack exchange,提问作者Stefanie Gauss
相关产品推荐
相关产品推荐

