我有一个cdk-virtual-scroll-viewport
包含许多元素的容器,这意味着并非所有元素都一次呈现。如果我滚动,我会得到更多元素并“丢失”以前的元素。
我想要做的是计算这个容器的孩子并处理它的数据。
我已经完成了计数和处理部分,并且它正在工作,因为我已经检查了适合此容器的元素而无需滚动。
我遇到的问题是,因为这个容器不会一次加载所有数据,如果我使用 获取计数len()
,我只会得到适合我当前屏幕的内容以及开发人员添加的元素缓冲区。
我想在这个容器的末尾循环滚动,直到我得到一个我不能滚动的异常。这当然不是最好的选择,因为它每次都会在计数中添加这个额外的缓冲区,即使它当时不可见。
这是我尝试过的,但它似乎根本没有在页面中滚动。(已headless
关闭属性检查)
scrollview = driver.find_element_by_tag_name("cdk-virtual-scroll-viewport")
while True:
try:
print("here")
driver.execute_script("arguments[0].scrollIntoView(true);", scrollview)
# driver.execute_script("coordinates = arguments[0].getBoundingClientRect();scrollTo(coordinates.x,coordinates.y);", scrollview)
time.sleep(2)
except:
break
关于如何正确执行此操作的任何建议?我要为其编写测试的页面充满了虚拟滚动条,因此我需要一个解决方案来使用 selenium/python/javascript 执行此操作,而不仅仅是手动执行此操作。
谢谢。