我们如何在 selenium java 中检查滚动条是否可滚动?

我必须检查水平滚动条是否可滚动。我尝试通过检查元素是否显示,这是在使用 Javascript 水平滚动之后出现的,scrollIntoView但它如何确保滚动条正常工作。

因为滚动条位置不会改变,scrollIntoView只会滚动元素并使其显示在屏幕上。但滚动条不滚动。


潇潇雨雨
浏览 241回答 2
2回答

慕桂英4014372

尝试以下选项来水平滚动:// scroll at a particular elementWebElement e1 =driver.findElement(By.xpath(“//input [@id=’ElementID’]”));((JavascriptExecutor)driver).executeScript(“arguments[0].scrollIntoView();”, e1);Where ‘e1’ is the locator where you want to scroll.// scroll at a particular coordinate,.  ((JavascriptExecutor)driver).executeScript(“window.scrollBy(200,300)”);// scroll horizontally in the right direction.((JavascriptExecutor)driver).executeScript(“window.scrollBy(2000,0)”);// scroll horizontally in the left direction.((JavascriptExecutor)driver).executeScript(“window.scrollBy(-2000,0)”);

冉冉说

这个想法很简单 - 首先,尝试将滚动条移动到任一侧并检查它是否真的移动了。//scrol 1px to the left$(document).scrollLeft(1);if($(document).scrollLeft() != 0){   //there's a scroll bar}else{   //there's no scrollbar}//scroll back to original location$(document).scrollLeft(0);让我们将其转换为 Java 方法并在您的脚本中使用它。    /**     *      * @param js reference to JavascriptExecutor     * @param element is a string of locator (i.e. #scroll > span etc.)     * @return true if scrollbar is scrollable     */    boolean testScrollBar(JavascriptExecutor js, String element){        String jq = String.format("return $('%s').scrollLeft()", element);        String jq1 = String.format("$('%s').scrollLeft(1)", element);        String jq2 = String.format("$('%s').scrollLeft(0)", element);        System.err.println("Test1: "+js.executeScript(jq));        js.executeScript(jq1);        Long currentPos =  (Long)js.executeScript(jq);        System.err.println("Test2: " + currentPos);        js.executeScript(jq2);        return currentPos != 0;    }我希望它能帮助你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java