# scrollIntoView

Scroll element into viewport for Desktop/Mobile Web **AND** Mobile Native Apps.

info

Scrolling for Mobile Native Apps is done based on the mobile `swipe` command.

This command only works with the following up-to-date components:

* Appium server (version 2.0.0 or higher)
* `appium-uiautomator2-driver` (for Android)
* `appium-xcuitest-driver` (for iOS)

Make sure your local or cloud-based Appium environment is regularly updated to avoid compatibility issues.

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

| Name                                        | Type              | Details                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `options`<br />*optional*                   | `object, boolean` | options for `Element.scrollIntoView()`. Default for desktop/mobile web:<br />`{ block: 'start', inline: 'nearest' }`<br />Default for Mobile Native App<br />`{ maxScrolls: 10, scrollDirection: 'down' }`                                                                                                                                                                   |
| **Desktop/Mobile Web Only**                 |                   |                                                                                                                                                                                                                                                                                                                                                                              |
| `options.behavior`<br />*optional*          | `string`          | See [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView).<br />**WEB-ONLY** (Desktop/Mobile)                                                                                                                                                                                                                                             |
| `options.block`<br />*optional*             | `string`          | See [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView).<br />**WEB-ONLY** (Desktop/Mobile)                                                                                                                                                                                                                                             |
| `options.inline`<br />*optional*            | `string`          | See [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView).<br />**WEB-ONLY** (Desktop/Mobile)                                                                                                                                                                                                                                             |
| **Mobile Native App Only**                  |                   |                                                                                                                                                                                                                                                                                                                                                                              |
| `options.direction`<br />*optional*         | `string`          | Can be one of `down`, `up`, `left` or `right`, default is `up`.<br />**MOBILE-NATIVE-APP-ONLY**                                                                                                                                                                                                                                                                              |
| `options.maxScrolls`<br />*optional*        | `number`          | The max amount of scrolls until it will stop searching for the element, default is `10`.<br />**MOBILE-NATIVE-APP-ONLY**                                                                                                                                                                                                                                                     |
| `options.duration`<br />*optional*          | `number`          | The duration in milliseconds for the swipe. Default is `1500` ms. The lower the value, the faster the swipe.<br />**MOBILE-NATIVE-APP-ONLY**                                                                                                                                                                                                                                 |
| `options.scrollableElement`<br />*optional* | `Element`         | Element that is used to scroll within. If no element is provided it will use the following selector for iOS `-ios predicate string:type == "XCUIElementTypeApplication"` and the following for Android `//android.widget.ScrollView'`. If more elements match the default selector, then by default it will pick the first matching element.<br />**MOBILE-NATIVE-APP-ONLY** |
| `options.percent`<br />*optional*           | `number`          | The percentage of the (default) scrollable element to swipe. This is a value between 0 and 1. Default is `0.95`.<br />**NEVER** swipe from the exact top\|bottom\|left\|right of the screen, you might trigger for example the notification bar or other OS/App features which can lead to unexpected results.<br />**MOBILE-NATIVE-APP-ONLY**                               |

## Examples[​](#examples "Direct link to Examples")

desktop.mobile.web.scrollIntoView\.js

```
it('should demonstrate the desktop/mobile web scrollIntoView command', async () => {
    const elem = await $('#myElement');
    // scroll to specific element
    await elem.scrollIntoView();
    // center element within the viewport
    await elem.scrollIntoView({ block: 'center', inline: 'center' });
});
```

mobile.native.app.scrollIntoView\.js

```
it('should demonstrate the mobile native app scrollIntoView command', async () => {
    const elem = await $('#myElement');
    // scroll to a specific element in the default scrollable element for Android or iOS for a maximum of 10 scrolls
    await elem.scrollIntoView();
    // Scroll to the left in the scrollable element called '#scrollable' for a maximum of 5 scrolls
    await elem.scrollIntoView({
        direction: 'left',
        maxScrolls: 5,
        scrollableElement: $('#scrollable')
    });
});
```
