python3 + selenium 使用 JS操作页面滚动条

js2 = "window.scrollTo(0,0);" #括号中为坐标

当不知道需要的滚动的坐标大小时:

weizhi2 = driver.find_element_by_id("goldLeaseApp_bClientID") #先定位到一个元素
driver.execute_script("arguments[0].scrollIntoView();", weizhi2) #让其滚动到这个坐标
arguments[0].scrollIntoView()为固定写法

参考链接

参考代码:

使用 JS 滑动纵向滚动条

from selenium import webdriverfrom time import sleep
# driver = webdriver.Chrome()driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys("storm")
driver.find_element_by_id('su').click()
js1 = "window.scrollTo(0, document.body.scrollHeight)"#滑动滚动条到底部
js2 = "window.scrollTo(0,0)"#滑动到顶部
js3 = "window.scrollTo(0,200)"#向下移动200像素
js4 = "arguments[0].scrollIntoView();"#滑动滚动条到某个指定的元素

sleep(2) #等待页面加载完,注意观察滚动条目前处于最上方
driver.execute_script(js1) #执行js1,将滚动条滑到最下方
sleep(2) #加等待时间,看效果
driver.execute_script(js2) #执行js2,将滚动条滑到最上方
sleep(2) #加等待时间,看效果
driver.execute_script(js3) #执行js3,将滚动条向下滑到200像素
sleep(2) #加等待时间,看效果driver.execute_script(js2) #执行js2,将滚动条滑到最上方sleep(2)
ele = driver.find_element_by_id('con-ar')  #定位一个元素driver.execute_script(js4,ele)  #滑动到上面定位的元素的地方
sleep(2)
driver.quit()
以上语句Chrome 和 Firefox 浏览器测试都没问题

使用 JS 滑动横向滚动条

from selenium import webdriverfrom time import sleep

driver = webdriver.Chrome()# driver = webdriver.Firefox()driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys("storm")
driver.find_element_by_id('su').click()

driver.set_window_size(500,500) #缩小浏览器窗口,使之出现横向滚动条
js5 = "window.scrollTo(document.body.scrollWidth,0)"
js6 = "window.scrollTo(0,0)"
js7 = "window.scrollTo(200,0)"
driver.execute_script(js5)  #移动到最右边
sleep(2)
driver.execute_script(js6) #移动到最左边
sleep(2)
driver.execute_script(js7) #向右移动200像素
sleep(2)
driver.quit()

操作内嵌滚动条

内嵌滚动条,一般嵌在一个iframe 里面,先切到要操作滚动条所在的iframe里面即可

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://sahitest.com/demo/iframesTest.htm")
sleep(2)
driver.switch_to.frame(1)#1代表id=1的frame(框架)
js5 = "window.scrollTo(0,200)"driver.execute_script(js5)  #向下移动200像素sleep(2)
driver.quit()

多次滑动示例

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://www.taobao.com")
title = driver.title#title为当前页面标题
if title == '淘宝网 - 淘!我喜欢':
    print('成功跳转')
else:
    print('跳转失败')
driver.find_element_by_css_selector("#q").send_keys("手机壳")#在搜索框中输入手机壳
driver.find_element_by_css_selector(".btn-search").click()#点击淘宝搜索
sleep(2)
aaa = "window.scrollTo(0,500);" #设置右侧下拉滚动坐标为500,底部(左右滚动条)为0
bbb = "window.scrollTo(0,800);"
ccc = "window.scrollTo(0,1000);"
driver.execute_script(aaa)#滑动第一次
sleep(2)
driver.execute_script(bbb)#再次滑动至更底部
sleep(2)
driver.execute_script(ccc)#再次滑动至更底部

你可能感兴趣的:(Python+selenium)