# -*- coding: utf-8 -*-
# @Time : 2018/6/19 10:54
# @Author : 清心
def xh():
t = True
time.sleep(1)
while t:
driver.execute_script("window.scrollBy(0,1000)")
try:
driver.find_element('link_text', '没有更多推荐了,返回首页').click()
time.sleep(1)
t = False
except:
xh()
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get("https://blog.csdn.net/sily_z/article/details/80733267")
xh()
#这个条件是决定你是否继续下滑的条件,如果找到你想要的元素,那么就会跳出循环,不在下滑,否则会一直下滑。
driver.find_element('link_text', '没有更多推荐了,返回首页').click()
上面这些是我对于循环操作滚动条的操作,原来我页搜索过,但是没有发现直接给一个参考,都是举得例子,我现在就把具体的代码都写出来了,其实实现很简单,就是定义一个方法,判断一下你要寻找的元素对象,元素对象查找不到报异常,再重新操作滚动条。大概是这样,希望对大家有帮助。
T:
1.我用的谷歌浏览器,需要自己下载谷歌浏览器,下载驱动,如果使用其他浏览器,请修改浏览器类型
2.
window.scrollBy(0,100)
这个方法是从当前位置向下滚动100像素,而 window.scrollTo(0,100) 这个方法是从0滚动到100像素,这两个方法都是滚动操作,但是后面这个只会从0像素滚动到100像素,除非修改数值才可以滚动到对应像素位置,而我使用的则会一直向下滚动,希望不要弄混淆了。
3.当然,还有一种方法就是鼠标移动到目标元素上方的操作了。
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(self.driver).move_to_element(element).perform()
# 将鼠标移动到目标元素上方,适用于当前页面元素已加载完毕,但是在屏幕中看不到的情况。