addCommand
The browser method addCommand
helps you to write your own set of commands.
정보
You can find more information on adding custom commands in the custom command guide.
Usage
browser.addCommand(name, callback, { attachToElement, disableElementImplicitWait })
Parameters
Name | Type | Details |
---|---|---|
name | string | name of the custom command |
callback | Function | function to be called |
options optional | Boolean, Object | DEPRECATED when Boolean (elementScope). Options object with the following properties: |
options.attachToElement optional | Boolean | extend the Element object instead of the Browser object |
options.disableElementImplicitWait optional | Boolean | disable implicit wait for element commands |
Example
execute.js
// Basic usage with browser scope
await browser.addCommand('getUrlAndTitle', async function (customParam) {
// `this` refers to the `browser` scope
return {
url: await this.getUrl(),
title: await this.getTitle(),
customParam: customParam
}
})
// Element scope using options object (RECOMMENDED)
await browser.addCommand('waitAndClick', async function () {
// `this` refers to the `element` scope
await this.waitForClickable()
await this.click()
}, { attachToElement: true })
// Advanced usage with options
await browser.addCommand('fastClick', async function () {
// `this` refers to the `element` scope
await this.click()
}, {
attachToElement: true,
disableElementImplicitWait: true // Skip implicit wait for faster execution
})
//usage
it('should use my add command', async () => {
await browser.url('https://webdriver.io')
const result = await browser.getUrlAndTitle('foobar')
assert.strictEqual(result.url, 'https://webdriver.io')
assert.strictEqual(result.title, 'WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
assert.strictEqual(result.customParam, 'foobar')
// Using element commands
const element = await $('button')
await element.waitAndClick()
await element.fastClick()
})