In one of our internal angular applications, there is a license text box displayed. Since there is a lot of text inside, the license box, represented as a div
element, has a scroll.
Question: How to test whether an element has a scroll or not in protractor
?
Here is an HTML representation of the element:
<div class="login-disclaimer-text-canvas ng-binding" ng-bind-html="disclaimer">
Copyright © Company, 2015. All Rights Reserved.
...
</div>
where login-disclaimer-text-canvas
has the following CSS styles defined:
.login-disclaimer-text-canvas {
height: 50px;
width: 100%;
overflow-y: auto;
background-color: #eee;
color: #3E6372;
padding: 4px;
font-size: 10px;
}
The trick (originally proposed here) is to compare
height
property:with
scrollHeight
:If
scrollHeight
is greater thanheight
- then an element has a scrollbar.In
protractor
we need to compare the resolved promises ofgetAttribute('height')
andgetAttribute('scrollHeight')
. Let's make a reusable function and resolve one of two promises viathen()
lettingexpect()
to resolve the second:where
toBeGreaterThan()
handy matcher is a part ofjasmine-matchers
third-party.