使用 Selenium (Python) 滚动到 div 元素的底部

问题描述 投票:0回答:1

我想滚动网站中的特定 div 元素,直到它到达底部。
假设我有这个 html:

<div>
    <ul>
        <li>list1</li>
        <li>list2</li>
        <li>list3</li>
    </ul>
    <ol>
        <li>previous</li>
        <li>current</li>
        <li>next</li>
</div>

现在

<ol>
元素位于页面底部的我的视口之外,并且在整个页面中,上面列出的 div 是唯一可滚动的元素。我如何滚动到底部,这样我就可以在我的视口中看到
<ol>
并且我可以使用 selenium 与其进行交互?就像使用
.click()
一样。我无法直接滚动到页面底部,因为只有 div 是可滚动的,并且尝试滚动到其他任何位置都不会执行任何操作。

查看之前的 StackOverflow 线程,我尝试找到 div,然后使用 javascript 滚动它,如下所示:

div = self.driver.find_element(By.XPATH, "/html/body/main/section/section/div[2]/div")
self.driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', div)

我希望这会将 div 滚动到

<ol>
列表,并且我可以与其交互。不幸的是,这没有做任何事情,我仍然得到一个
NoSuchElementException
错误。

python html selenium-webdriver
1个回答
0
投票

如果您想滚动到页面底部,可以使用浏览器 Web API 的 scrollTo 方法。

JavaScript 片段:

window.scrollTo({'top': document.body.scrollHeight, 'behavior': 'instant'});

Python代码:

js_scroll_bottom = "window.scrollTo({'top': document.body.scrollHeight, 'behavior': 'instant'});"
self.driver.execute_script(js_scroll_bottom)
© www.soinside.com 2019 - 2024. All rights reserved.