UNPKG

@christian-bromann/webdriverio

Version:

A nodejs bindings implementation for selenium 2.0/webdriver

46 lines (38 loc) 1.49 kB
/** * check if element is visible and within the viewport * * @param {String} elements DOM elements to check against * * @see waitForVisible */ let isWithinViewport = function (elements) { var dde = document.documentElement var result = [] if (elements.length === 0) { throw new Error('NoSuchElement') } for (var i = 0; i < elements.length; ++i) { var elem = elements[i] var isWithinViewport = true while (elem.parentNode && elem.parentNode.getBoundingClientRect) { var elemDimension = elem.getBoundingClientRect() var elemComputedStyle = window.getComputedStyle(elem) var viewportDimension = { width: dde.clientWidth, height: dde.clientHeight } isWithinViewport = isWithinViewport && (elemComputedStyle.display !== 'none' && elemComputedStyle.visibility === 'visible' && parseFloat(elemComputedStyle.opacity, 10) > 0 && elemDimension.bottom > 0 && elemDimension.right > 0 && elemDimension.top < viewportDimension.height && elemDimension.left < viewportDimension.width) elem = elem.parentNode } result.push(isWithinViewport) } return result } export default isWithinViewport