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.

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