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如何使滚动条滚动到最元素位置