Skip to main content

url

The url command loads an URL in the browser. If a baseUrl is specified in the config, it will be prepended to the url parameter using node's url.resolve() method. Calling browser.url('...') with the same url as last time will trigger a page reload. However, if the url contains a hash, the browser will not trigger a new navigation and the user has to refresh the page to trigger one.

The command returns an WebdriverIO.Request object that contains information about the request and response data of the page load.

The command supports the following options:

wait

The desired state the requested resource should be in before finishing the command. It supports the following states:

  • none: no wait after the page request is made and the response is received
  • interactive: wait until the page is interactive
  • complete: wait until the DOM tree of the page is fully loaded
  • networkIdle: wait until there are no pending network requests

headers

Headers to be sent with the request.

Default: {}

auth

Basic authentication credentials. Note: this will overwrite the existing Authorization header if provided in the headers option.

timeout

If set to a number, the command will wait for the specified amount of milliseconds for the page to load all responses before returning.

Note: for this to have an impact, it requires the wait option to be set to networkIdle.

Default: 5000

Usage
browser.url(url, options)
Parameters
NameTypeDetails
url
optional
Stringthe URL to navigate to
options
optional
UrlOptionsnavigation options
Examples
url.js
// navigate to a new URL
const request = await browser.url('https://webdriver.io');
// log url
console.log(request.url); // outputs: "https://webdriver.io"

baseUrlResolutions.js
// With a base URL of http://example.com/site, the following url parameters resolve as such:
// When providing a scheme:
// https://webdriver.io
await browser.url('https://webdriver.io');

// When not starting with a slash, the URL resolves relative to the baseUrl
// http://example.com/site/relative
await browser.url('relative');

// When starting with a slash, the URL resolves relative to the root path of the baseUrl
// http://example.com/rootRelative
await browser.url('/rootRelative');

basicAuth.js
// navigate to a URL with basic authentication
await browser.url('https://the-internet.herokuapp.com/basic_auth', {
auth: {
user
pass
}
});
await expect($('p=Congratulations! You must have the proper credentials.').toBeDisplayed();

onBeforeLoad.js
// navigate to a URL and mock the battery API
await browser.url('https://pazguille.github.io/demo-battery-api/', {
onBeforeLoad (win) {
// mock "navigator.battery" property
// returning mock charge object
win.navigator.getBattery = () => Promise.resolve({
level: 0.5,
charging: false,
chargingTime: Infinity,
dischargingTime: 3600, // seconds
})
}
})
// now we can assert actual text - we are charged at 50%
await expect($('.battery-percentage')).toHaveText('50%')
// and has enough juice for 1 hour
await expect($('.battery-remaining')).toHaveText('01:00)

Welcome! How can I help?

WebdriverIO AI Copilot