셀레늄의 기본 동작은 스크롤하여 요소가 뷰포트 상단에서 거의 보이지 않게하는 것입니다. 또한 모든 브라우저가 똑같은 동작을하는 것은 아닙니다. 이것은 매우 불만족입니다. 내가하는 것처럼 브라우저 테스트 비디오를 녹화하면 원하는 요소 를 스크롤하여 세로로 중앙에 위치시키는 것입니다. 입니다.
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);
}