Search code examples
javascriptangularjsscrollprotractor

How to set focus on a section of my web page and then scroll down


Using Protractor, I would like to first set focus on a left panel on my web page, and then scroll down in order to click on a filter.

How can I do this using the Protractor syntax?

Here is my HTML:

<section id="filters" style="height: 266px; overflow: hidden;" tabindex=
"5076">
    <div class="ng-binding" id="currentSearchTitle">
        Current search
    </div>

    <div id="currentSearch">
        <div id="searchBlock">
            <div id="jobTypeBlock">
                <div class="ng-binding" id="jobTypeTitle">
                    Filter by job type
                </div>

                <div class="ng-scope">
                    <div class="ng-scope">
                        <div class="ng-scope">
                            <div class="ng-scope">
                                <div class="ng-scope">
                                    <div class="ng-scope">
                                        <div class="ng-scope"></div>

Solution

  • To set the focus on your panel, you can maybe click on it:

    element(by.id('filters')).click();
    

    Then to scroll to your filter, you can execute a client-side script:

    var filter = browser.findElement(by.id('jobTypeTitle'));
    var scrollIntoView = function () {
      arguments[0].scrollIntoView();
    };
    browser.executeScript(scrollIntoView, filter);
    

    You can have a look at the webdriverjs documentation.