1.浏览器自带外边的滚动条:思路就是用scrollBy一直下拉滚动条,然后scrollTop会一直变化,当scrollTop不变时,说明就到底了。跳出循环即可。
代码:
import time
from selenium import webdriver
driver =webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('python滚动条的高度')
time.sleep(1)
driver.find_element_by_id('su').click()
time.sleep(2)
#定义一个初始值
temp_height=0
while True:
#循环将滚动条下拉
driver.execute_script("window.scrollBy(0,300)")
#sleep一下让滚动条反应一下
time.sleep(2)
#获取当前滚动条距离顶部的距离
check_height = driver.execute_script("return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
#如果两者相等说明到底了
if check_height==temp_height:
break
temp_height=check_height
print(check_height)
driver.quit()
运行结果:
300
600
900
1199
2.内嵌滚动条,循环下滑到最底部
代码:
内嵌滚动条的demo.html的代码在https://blog.csdn.net/zhaoweiya/article/details/107162825
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file:///C:/Users/18210/Desktop/demo.html')
# 定义一个初始值
temp_height = 0
x=20
y=20
while True:
js1 = "var q=document.getElementsByClassName('scroll')[0].scrollTop={}".format(x)
driver.execute_script(js1)
time.sleep(2)
x+=y
check_height = driver.execute_script(
"return document.getElementsByClassName('scroll')[0].scrollTop;")
if check_height == temp_height:
break
temp_height = check_height
print(check_height)
driver.quit()
运行结果:
20
40
60
80
85