Типова поведінка Selenium нас для прокрутки, так що елемент ледь видно у верхній частині вікна перегляду. Також не всі браузери мають таку саму поведінку. Це дуже незадоволює. Якщо ви записуєте відео з тестів веб-переглядача, як я, те, що ви хочете, - це елемент, який прокручується до поля перегляду та буде вертикально розташований по центру .
Ось моє рішення для Java:
public List<String> getBoundedRectangleOfElement(WebElement we)
{
JavascriptExecutor je = (JavascriptExecutor) driver;
List<String> bounds = (ArrayList<String>) je.executeScript(
"var rect = arguments[0].getBoundingClientRect();" +
"return [ '' + parseInt(rect.left), '' + parseInt(rect.top), '' + parseInt(rect.width), '' + parseInt(rect.height) ]", we);
System.out.println("top: " + bounds.get(1));
return bounds;
}
А потім, для прокрутки, ви називаєте це так:
public void scrollToElementAndCenterVertically(WebElement we)
{
List<String> bounds = getBoundedRectangleOfElement(we);
Long totalInnerPageHeight = getViewPortHeight(driver);
JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("window.scrollTo(0, " + (Integer.parseInt(bounds.get(1)) - (totalInnerPageHeight/2)) + ");");
je.executeScript("arguments[0].style.outline = \"thick solid #0000FF\";", we);
}