Вспомогательный класс для пользовательской полосы прокрутки:
public class ScrollHelper {
private static String VeticalScrollScript = "arguments[0].scrollTop = arguments[1]";
private static String HorizonScrollScript = "arguments[0].scrollLeft = arguments[1]";
private JavascriptExecutor jsExecutor;
public ScrollHelper() {
this.jsExecutor = (JavascriptExecutor) driver;
}
public ScrollHelper asHorizon(scrollTarget, scrollContext) {
if(isPresentHorizonScrollBar(scrollContext)) {
int offset = scrollTarget.getLocation().getX() -
scrollContext.getLocation().getX();
this.jsExecutor.executeScript(HorizonScrollScript, scrollContext, offset);
}
return this;
}
public ScrollHelper asVertical(scrollTarget, scrollContext) {
if(this.isPresentVerticalScrollBar(scrollContext)) {
int offset = scrollTarget.getLocation().getY() -
scrollContext.getLocation().getY();
this.jsExecutor.executeScript(VeticalScrollScript, scrollContext, offset);
}
return this;
}
private boolean isPresentHorizonScrollBar(WebElement scrollContext) {
String script = "return arguments[0].scrollWidth > arguments[0].clientWidth;";
return (Boolean) (this.jsExecutor.executeScript(script, scrollContext));
}
private boolean isPresentVerticalScrollBar(WebElement scrollContext) {
String script = "return arguments[0].scrollHeight > arguments[0].clientHeight;";
return (Boolean) (this.jsExecutor.executeScript(script, scrollContext));
}
}
Для вашего случая:
ScrollHelper scroll = new ScrollHelper(driver);
scroll.asVertical(
scrollTarget, // the group
scrollContext // the element who owns the custom scroll bar
);
В нижнем случае scrollContext
- это pre
, выделенный зеленой линией, А не его родитель <div class="post-text">
или другой элемент.Вам нужно найти правильный элемент, которому принадлежит пользовательская полоса прокрутки, в качестве значения для scrollContext
.
Чтобы найти правильный scrollContext
, нужно увидеть, что элемент имеет стиль CSS over-flow
, если снять флажокфлажок перед over-flow
, вы заметите, что полоса прокрутки исчезнет, и вернитесь, когда отметите ее.
![enter image description here](https://i.stack.imgur.com/WqvwY.png)