【selenium】下拉滚动条

简介: 简介:【selenium】下拉滚动条

selenium下拉滚动条的三种方法


一、设置滚动条位置


execute_script(“document.documentElement.scrollTop= 位置”)

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 访问网址
driver.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%86%AC%E5%A5%A5%E4%BC%9A&fenlei=256&rsv_pq=c61031d20000416d&rsv_t=34329gsBNwKJFQ%2Bmyc957YqRGPTtQjrdzsvJ%2Fpfwl4Dta6B4YxTZjnzxVE8&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=13&rsv_sug1=15&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=4248&rsv_sug4=4635')
# 等待3秒
time.sleep(3)
# 滚动到底部
driver.execute_script("document.documentElement.scrollTop=10000")
# 等待1秒
time.sleep(1)
# 关闭所有页面
driver.quit()

75ee12e7fbc14a96b0be619420f28401.gif

二、js的window.scrollTo()方法


window.scrollTo(x,y) 通过坐标(x,y)进行滑动

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 访问页面
driver.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%86%AC%E5%A5%A5%E4%BC%9A&fenlei=256&rsv_pq=c61031d20000416d&rsv_t=34329gsBNwKJFQ%2Bmyc957YqRGPTtQjrdzsvJ%2Fpfwl4Dta6B4YxTZjnzxVE8&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=13&rsv_sug1=15&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=4248&rsv_sug4=4635')
# 等待3秒
time.sleep(3)
# 滚动到底部
driver.execute_script("window.scrollTo(0,10000)")
# 等待1秒
time.sleep(1)
# 退出所有页面
driver.quit()

6cb672b40f0f4c848b202ec73f2b7588.gif


三、定位元素进行滚动


execute_script(“arguments[0].scrollIntoView()”,element)

  • element:定位到的元素
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
option = webdriver.ChromeOptions()
# 反屏蔽
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=option)
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': 'Object.defineProperty(navigator, "webdriver", {get:()=>undefined})'
})
# 访问页面
driver.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%86%AC%E5%A5%A5%E4%BC%9A&fenlei=256&rsv_pq=c61031d20000416d&rsv_t=34329gsBNwKJFQ%2Bmyc957YqRGPTtQjrdzsvJ%2Fpfwl4Dta6B4YxTZjnzxVE8&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=13&rsv_sug1=15&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=4248&rsv_sug4=4635')
# 等待3秒
driver.implicitly_wait(5)
# 定位到目标处
target = driver.find_element(By.ID, '4')
# 滚动到所定位的目标处
driver.execute_script("arguments[0].scrollIntoView()", target)
# 等待1秒
time.sleep(3)
# 退出所有页面
driver.quit()

这里需要用到上一节的反屏蔽处理,否则不能正确定位到元素5cc2d8c353f74cd58ff72da060f49a63.gif

相关文章
|
11月前
|
Web App开发 JavaScript
selenium--浏览器滚动条操作
selenium--浏览器滚动条操作
|
Web App开发 JavaScript
Selenium成长之路-22浏览器滚动条处理
Selenium成长之路-22浏览器滚动条处理
116 0
|
Web App开发 Java Python
Java selenium操作下拉滚动条的几种方法
数据采集中,经常遇到动态加载的数据,我们经常使用selenium模拟浏览器操作,需要多次下拉刷新页面才能采集到所有的数据,就此总结了几种selenium操作下拉滚动条的几种方法我这里演示的是Java版本的,使用chromedriver,当然你可以换成python或其他语言,浏览器用firefox或者phantomjs(无头浏览器),大部分都是适用的,不同浏览器有略微的差异。
8191 0
|
JavaScript 前端开发
Selenium系列(22) - 通过selenium控制浏览器滚动条的几种方式
Selenium系列(22) - 通过selenium控制浏览器滚动条的几种方式
535 0
|
Web App开发 Python
利用Selenium控制网页内嵌滚动条
在利用Selenium写网页爬虫的时候,我们会经常碰到网页内嵌滚动条,如下网页: 那么该如何控制该内嵌滚动条的行为呢?我们的主要思路是:先找到滚动条,再利用Selenium中的命令:ActionChains(browser).drag_and_drop_by_offset(element, xOffset, yOffset).perform() 找到元素element,设置好里面的xOffset和yOffset,这样便能够控制滚动条的上下移动了。
2212 0
|
Web App开发 JavaScript IDE
|
Web App开发 Python
Selenium2+python自动化26-js处理内嵌div滚动条
前言     前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦。 一、内嵌滚动条     1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相。
1817 0
|
Web App开发 JavaScript 前端开发
Selenium2+python自动化17-JS处理滚动条
前言     selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。
2250 0
|
1天前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
11 5

热门文章

最新文章