# setTimeout

Sets the timeouts associated with the current session, timeout durations control such behaviour as timeouts on script injection, document navigation, and element retrieval. For more information and examples, see [timeouts guide](https://webdriver.io/docs/timeouts#selenium-timeouts).

info

It is not recommended to set `implicit` timeouts as they impact WebdriverIO's behavior and can cause errors in certain commands, e.g. `waitForExist` with reverse flag.

## Usage[​](#usage "Direct link to Usage")

```
await browser.setTimeout({ implicit, pageLoad, script })
```

## Parameters[​](#parameters "Direct link to Parameters")

| Name                                | Type       | Details                                                                                                                                                                                                                                            |
| ----------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `timeouts`                          | `Timeouts` | Object containing session timeout values                                                                                                                                                                                                           |
| `timeouts.implicit`<br />*optional* | `Number`   | Time in milliseconds to retry the element location strategy when finding an element.                                                                                                                                                               |
| `timeouts.pageLoad`<br />*optional* | `Number`   | Time in milliseconds to wait for the document to finish loading.                                                                                                                                                                                   |
| `timeouts.script`<br />*optional*   | `Number`   | Scripts injected with [`execute`](https://webdriver.io/docs/api/browser/execute) or [`executeAsync`](https://webdriver.io/docs/api/browser/executeAsync) will run until they hit the script timeout duration, which is also given in milliseconds. |

## Example[​](#example "Direct link to Example")

setTimeout.js

```
it('should change timeout duration for session with long code duration', async () => {
    await browser.setTimeout({
        'pageLoad': 10000,
        'script': 60000
    });
    // Execute code which takes a long time
    await browser.executeAsync((done) => {
        console.log('Wake me up before you go!');
        setTimeout(done, 59000);
    });
});
```
