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 receivedinteractive
: wait until the page is interactivecomplete
: wait until the DOM tree of the page is fully loadednetworkIdle
: 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
Name | Type | Details |
---|---|---|
url optional | String | the URL to navigate to |
options optional | UrlOptions | navigation options |
Examples
// navigate to a new URL
const request = await browser.url('https://webdriver.io');
// log url
console.log(request.url); // outputs: "https://webdriver.io"
// 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');
// 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();
// 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)