Selenium 验证 div 是不是有滚动条

Posted

技术标签:

【中文标题】Selenium 验证 div 是不是有滚动条【英文标题】:Selenium verify that div has a scrollbarSelenium 验证 div 是否有滚动条 【发布时间】:2018-07-10 17:53:08 【问题描述】:

我正在尝试验证特定的 div 是否有滚动条,如何使用 Selenium 来实现? 元素:

<div class="checkout-mini-cart">

代码:

javascriptExecutor jsExecutor = (JavascriptExecutor)webDriver;
String script = "var div = document.getElementsByClassName('.checkout-mini-cart');" +
                "return div.scrollHeight < div.clientHeight;";
Object isScrollable = jsExecutor.executeScript(script);

它总是返回 false,因为 "return div.scrollHeight;"返回空值。怎么做才是正确的?

【问题讨论】:

【参考方案1】:

代码document.getElementsByClassName 返回一个数组,而不是一个 DOM 元素。

通过脚本注入检查元素是否可滚动:

String JS_ELEMENT_IS_SCROLLABLE = 
    "return arguments[0].scrollHeight > arguments[0].offsetHeight;";

JavascriptExecutor jse = (JavascriptExecutor)webDriver;

WebElement container = driver.findElement(By.cssSelector(".checkout-mini-cart"));
Boolean isScrollable = (Boolean)jse.executeScript(JS_ELEMENT_IS_SCROLLABLE, container);

或通过阅读属性:

WebElement container = driver.findElement(By.cssSelector(".checkout-mini-cart"));
int scrollHeight = parseInt(container.getAttribute("scrollHeight"));
int offsetHeight = parseInt(container.getAttribute("offsetHeight"));
Boolean isScrollable = scrollHeight> offsetHeight;

【讨论】:

以上是关于Selenium 验证 div 是不是有滚动条的主要内容,如果未能解决你的问题,请参考以下文章

Selenium WebDriver如何使滚动条滚动到最元素位置

selenium移动div里面的滚动条,操作弹出对话框

Selenium 如何解决滚动条问题,未显示元素不可操作问题

Selenium:使用 Actions 类的水平滚动

带滚动条的div如何实现内容滑动,新手不懂,求高手支招

11.js处理内嵌div滚动条