Selenium+Python浏览器滚动条操作
2018-01-13 本文已影响258人
路由心定
浏览器滚动条操作
当我们运行脚本的时候,经常会遇到这样的错误:
selenium.common.exceptions.NoSuchElementException
大部分原因可能是我的定位方法(id,name.xpath等查找错误),但是当我们一次次确认或者更换查找方法,这个错误还是会存在,这时候就要考虑是否需要操作浏览器滚动条......
PS场景:当我们打开页面,有些元素需要下拉页面才能操作。
(1)使用JS操作浏览器(右侧竖向)滚动条
方法1:
# coding=utf-8
from selenium import webdriver
import time
'''
以简书首页为
'''
driver=webdriver.Firefox()
driver.get("http://www.jianshu.com")
#等待页面加载3S time.sleep(3)
'''
0:为顶部;1000000:为底部
#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
#页面内嵌窗口浏览条滚动
js="var q=document.getElementById('id').scrollTop=1000"
driver.execute_script(js)
time.sleep(3)
'''
#将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=100000" driver.execute_script(js)
time.sleep(3)
方法2:只针对内嵌滚动条
# coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
'''
1.通过系统键盘:DOWN来操作
2.使用简书首页
3.内嵌滚动条
'''
driver = webdriver.Firefox()
driver.get("http://www.jianshu.com")
#最大化窗口 driver.maximize_window()
# 通过按向下键将页面滚动条拖到底部 driver.find_element_by_xpath("xpath").send_keys(Keys.DOWN)
time.sleep(1)
(2)使用JS操作浏览器(底部横向)滚动条
**scrollTo(x, y)js = "window.scrollTo(210,550);"**
x:代表横向坐标
y:代表纵向坐标
(3)当我们需要定位的元素是动态元素,或者我们不确定它在哪时,可以先找到这个元素然后再使用JS操作
target = driver.find_element_by_id('id')
driver.execute_script("arguments[0].scrollIntoView();", target)
ps:scroll函数用法
--scrollHeight 获取对象的滚动高度。
--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
--scrollWidth 获取对象的滚动宽度
欢迎关注我们自己的微信公众平台,获取更多学习资料
image