selenium没有控制页面滚动的方法,这时候只能借助Js了,selenium提供了一个操作js的方法:
execute_script(),可以直接执行js的脚本。
js="var q=document.getElementById(‘id‘).scrollTop=0" driver.execute_script(js)
scrollTop是右侧高度滚动,Y轴滚动
1.滚动条回到顶部: js="var q=document.getElementById(‘id‘).scrollTop=0" driver.execute_script(js) 2.滚动条拉到底部 js="var q=document.documentElement.scrollTop=10000" driver.execute_script(js) 3.这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。 js="var q=document.documentElement.scrollTop=5000" driver.execute_script(js)
X轴滚动
1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。 2.通过左边控制横向和纵向滚动条scrollTo(x, y) js = "window.scrollTo(100,400);" driver.execute_script(js) 3.第一个参数x是横向距离,第二个参数y是纵向距离
其他一些滚动
# 移动到元素element对象的“顶端”与当前窗口的“顶部”对齐 driver.execute_script("arguments[0].scrollIntoView();", element); driver.execute_script("arguments[0].scrollIntoView(true);", element); # 移动到元素element对象的“底端”与当前窗口的“底部”对齐 driver.execute_script("arguments[0].scrollIntoView(false);", element); # 移动到页面最底部 driver.execute_script("window.scrollTo(0, document.body.scrollHeight)"); # 移动到指定的坐标(相对当前的坐标移动) driver.execute_script("window.scrollBy(0, 700)"); # 结合上面的scrollBy语句,相当于移动到700+800=1600像素位置 driver.execute_script("window.scrollBy(0, 800)"); # 移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置 driver.execute_script("window.scrollTo(0, 1600)"); # 结合上面的scrollTo语句,仍然移动到纵坐标1200像素位置 driver.execute_script("window.scrollTo(0, 1200)");
结合seleium滚动到指定元素