【问题标题】:I want to know scroll bar is at end in selenium python我想知道滚动条在 selenium python 的末尾
【发布时间】:2020-09-07 14:13:53
【问题描述】:
我在 selenium 中编写了一个 while 循环,并且想调整我的 while 循环,所以当滚动条在其滚动结束时,while 循环应该停止。如何在 while 循环中编码这种类型的条件?我正在使用 Keys.DOWN 并且我的 while 循环现在设置为 True
我的while循环代码:
while True:
self.driver.find_element_by_id('pane-side').send_keys(Keys.DOWN * 5)
self.driver.find_elements_by_xpath("//div[@class='_2wP_Y']")
【问题讨论】:
标签:
python
python-3.x
selenium
web-scraping
selenium-firefoxdriver
【解决方案1】:
如果您想在 while 循环中滚动,您可以在使用 send_keys(Keys.DOWN * 5) 后检查页面 Y 偏移量是否发生了变化
from time import sleep
# Offset can not be smaller then 0
# we just want to ensure that we will try to scroll down at least once
previous_offset = -1
# current_offset (most probably 0)
current_offset = self.driver.execute_script('return window.pageYOffset;')
while previous_offset!=current_offset:
previous_offset = current_offset
self.driver.find_element_by_id('pane-side').send_keys(Keys.DOWN * 5)
# Give a browser some small time to react
sleep(0.1)
current_offset = driver.execute_script('return window.pageYOffset;')
如果您不需要使用循环并且想向下滚动到页面末尾,您可以这样做
self.driver.execute_script('window.scrollTo(0,document.body.scrollHeight);')