在QUnit中如何查询元素滚动条高度或检测元素是否存在滚动条?
测试Ember组件的滚动条配置
问题背景
在为Ember组件编写测试时,需要验证特定元素可滚动,同时其他区域(如body)不生成滚动条的配置是否正常。尝试多种方式后发现,assert.dom()无法直接获取scrollHeight这类DOM属性,hasProperty仅能检测属性是否等于指定值,无法完成属性间的大小比较。
最初的无效尝试
const scrollElement = assert.dom('[data-test-user-list-ul-element]'); var hasVerticalScrollbar = scrollElement.get('scrollHeight') > scrollElement.get('clientHeight'); assert.true(hasVerticalScrollbar);
可行解决方案
验证特定元素存在垂直滚动条
使用find()获取原生DOM元素,直接访问其scrollHeight和clientHeight属性做差值判断:
const element = find('[data-test-user-list-ul-element]'); const isThereADifference = element.scrollHeight - element.clientHeight; assert.true(isThereADifference > 0);
验证body元素无滚动条
通过this.element获取body元素,确认其滚动高度与可视高度无差值:
const element = this.element; const isThereADifference = element.scrollHeight - element.clientHeight; assert.true(isThereADifference === 0);
内容的提问来源于stack exchange,提问作者Display name
相关产品推荐
相关产品推荐

