Javascript Selenium/Python—如何访问/计数具有虚拟滚动的容器中的所有元素

Javascript Selenium/Python—如何访问/计数具有虚拟滚动的容器中的所有元素,javascript,python,selenium,scroll,virtualscroll,Javascript,Python,Selenium,Scroll,Virtualscroll,我有一个cdk虚拟滚动视口容器,其中包含许多元素,这意味着并非所有元素都一次渲染。如果我滚动,我会得到更多的元素,并“丢失”以前的元素 我想做的是计算这个容器的子容器并处理它的数据 我已经完成了计数和处理的部分,它正在工作,因为我已经检查了适合这个容器的元素,而不需要滚动 我遇到的问题是,因为这个容器不能一次加载所有数据,如果我使用len()获取计数,我只会得到适合当前屏幕的数据,再加上开发人员添加的元素缓冲区 我想在这个容器的末尾循环滚动,直到我得到一个异常,我不能再滚动了。这当然不是最好的

我有一个
cdk虚拟滚动视口
容器,其中包含许多元素,这意味着并非所有元素都一次渲染。如果我滚动,我会得到更多的元素,并“丢失”以前的元素

我想做的是计算这个容器的子容器并处理它的数据

我已经完成了计数和处理的部分,它正在工作,因为我已经检查了适合这个容器的元素,而不需要滚动


我遇到的问题是,因为这个容器不能一次加载所有数据,如果我使用
len()
获取计数,我只会得到适合当前屏幕的数据,再加上开发人员添加的元素缓冲区

我想在这个容器的末尾循环滚动,直到我得到一个异常,我不能再滚动了。这当然不是最好的选择,因为它会在每次加载的额外缓冲区计数中添加该缓冲区,即使它当时不可见

这是我尝试过的,但它似乎根本无法在页面中滚动。(在
headless
property关闭时进行检查)


有没有关于如何正确完成这项工作的建议?我想为其编写测试的页面充满了虚拟滚动条,因此我需要一个解决方案,用selenium/python/javascript来实现这一点,而不仅仅是手动实现


谢谢。

您能分享url吗?这是一个公司内部网站。但是如果你对我如何做我想做的事有任何想法,那将对我有很大帮助。
    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