selenium滚动条实现不同的效果

selenium中的滚动条是必须要会的操作,有时候我们定位的元素不再当前屏幕中,那么就会报错,这时候我们可以使用selenium来实现滚动的操作,知道找到那个元素为止。一般想实现滚动都是通过driver.execute()执行js代码。


from selenium import webdriver
#设置首选项
option =webdriver.ChromeOptions()
option.add_argument('headless')   

driver=webdriver.Chrome(chrome_options=option)  #第一个参数为驱动的目录,我这里就在当前目录,所以省略了
#第二个参数就是隐藏浏览器操作,我们看不到浏览器打开关闭,都是在后台执行的
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')  #滚动条滚动到底部
driver.execute_script('document.documentElement.scrollTop=0')  #滚动到顶部

再来看一下通过设置滚动的位置:
driver.execute_script('window.scrollBy(0,1000)')
scrollBy(x,y)中,x为必须参数,表示向右滚动的像素值;y也为必须参数,表示向下滚动的像素值
driver.execute_script('window.scrollTo(0,1000)')
scrollTo(x,y) 中,x为必须参数,表示要在窗口文档显示区左上角显示的文档的x坐标;y也为必须参数,表示要在窗口文档显示区左上角显示的文档的y坐标
driver.execute_script('document.documentElement.scrollTop=10000')
# 10000表示一下拉到底

然后我们就可以实现逐步滚动操作:

 for y in range(30):
        js='window.scrollBy(0,100)'
        driver.execute_script(js)
        time.sleep(0.5)
如果是弹窗滚动的话,也可以使用键盘事件如下:
from selenium.webdriver.common.action_chains import ActionChains #引入鼠标
from selenium.webdriver.common.keys import Keys #引入键盘
    #xpath 定位然后使用键盘向下按键进行滚动
driver.find_element_by_xpath("//*[@class='modal-right']").send_keys(Keys.DOWN)

发表评论