พฤติกรรมเริ่มต้นของ 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);
}