newWindow
Open new window in browser. This command is the equivalent function to window.open()
. This command does not
work in mobile environments.
Note: When calling this command you automatically switch to the new window.
Usage
browser.newWindow(url, { windowName, windowFeatures })
Parameters
Name | Type | Details |
---|---|---|
url | String | website URL to open |
options optional | NewWindowOptions | newWindow command options |
options.windowName optional | String | name of the new window |
options.windowFeatures optional | String | features of opened window (e.g. size, position, scrollbars, etc.) |
Example
- Asynchronous Mode
- Synchronous Mode
newWindowSync.js
it('should open a new tab', async () => {
await browser.url('https://google.com')
console.log(await browser.getTitle()) // outputs: "Google"
await browser.newWindow('https://webdriver.io', {
windowName: 'WebdriverIO window',
windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1',
})
console.log(await browser.getTitle()) // outputs: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js"
const handles = await browser.getWindowHandles()
await browser.switchToWindow(handles[1])
await browser.closeWindow()
await browser.switchToWindow(handles[0])
console.log(await browser.getTitle()) // outputs: "Google"
});
newWindowSync.js
it('should open a new tab', () => {
browser.url('https://google.com')
console.log(browser.getTitle()) // outputs: "Google"
browser.newWindow('https://webdriver.io', {
windowName: 'WebdriverIO window',
windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1',
})
console.log(browser.getTitle()) // outputs: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js"
const handles = browser.getWindowHandles()
browser.switchToWindow(handles[1])
browser.closeWindow()
browser.switchToWindow(handles[0])
console.log(browser.getTitle()) // outputs: "Google"
});
caution
Synchronous Mode will depcrecated with Node.js v16. With an update to the underlying Chromium version it became technically impossible to provide the same synchronous behavior. We recommend to start transition to asynchronous command execution. For more information, see our RFC.