python之selenium操作下拉滚动条方法

2024-08-25 04:52

本文主要是介绍python之selenium操作下拉滚动条方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

①在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载(元素在当前显示的页面不可见,拖动页面下拉直到该元素出现,此时才可以定位到该元素。)。

②例如:页面注册同意条款,需要滚动条到最底层,才能点击同意。

实例

下面一个网页,需要进行拖动页面下拉条后才能通过selenium代码找到密码输入框的元素。

拖动页面下拉条后:

方法①:使用JavaScript脚本直接操作滚动条元素向下拖动

注意:这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用。

js = "var q=document.getElementById('id').scrollTop=10000"driver.execute_script(js)

或者:

js = "var q=document.documentElement.scrollTop=10000"driver.execute_script(js)

方法②:使用JavaScript脚本将滚动条拖动到指定地方:

聚焦元素:就是把滚动条滚动到你想要查找的元素的位置

复制代码

# 1 定位需要聚焦元素
target = driver.find_element_xx# 2 js代码
js = "arguments[0].scrollIntoView();"# 3 执行聚焦元素操作
driver.execute_script(js代码, 元素target)

复制代码

注意:使用该方法需要获取将滚动条拖动至指定元素的元素对象定位。

target = driver.find_element_by_id("id_keypair")  # 需要将滚动条拖动至的指定的元素对象定位driver.execute_script("arguments[0].scrollIntoView();", target)  # 将滚动条拖动到元素可见的地方

该方法可以将页面滚动条拖动到需要显示的元素位置,此方法用途比较广,可以使用。

示例:

页面代码:

复制代码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><style type="text/css">button{padding: 8px; background: #f8f8f8;border-radius: 5px}button{margin-left:200px;margin-top:2000px}</style>
</head>
<body><button type="submitA" value="注册A" title="加入会员A" >注册用户A</button>
</body>
</html>

复制代码

脚本代码:

复制代码

"""
1.学习目标:掌握聚焦元素的操作方法
2.语法(操作方法)2.1 定位需要聚焦元素target = driver.find_element_xx2.2 js代码js = "arguments[0].scrollIntoView()"2.3 执行聚焦元素操作driver.execute_script(js代码,元素target)
3.需求在页面中,滚动条下拉聚焦元素位置。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os# 2.打开浏览器
driver = webdriver.Chrome()# 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)# 4.滚动条下拉聚焦元素位置
# 4.1 定位需要聚焦元素-淘宝首页的END文字
element = driver.find_element_by_css_selector("[type='submitA']")# 4.2 js代码
js = "arguments[0].scrollIntoView()"# 4.3 执行聚焦元素操作
driver.execute_script(js, element)
sleep(3)# 5.关闭浏览器
driver.quit()

复制代码

方法③:根据页面显示进行变通实现滚动条下拉效果:

在本实例中的页面中,密码是输入框,正常手工操作时,可以通过tab键可以从用户框切换到密码框中,所以根据此思路,在脚本中也可以发送tab键来切换,使元素显示。

from selenium.webdriver.common.keys import Keys  # 导入Keys类driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)  # 定位元素并操作输入

方法④:send_keys(Keys.Space) 模拟向页面发送空格键实现滚动条下拉效果:

注意:发送空格键的元素应该是整个页面对象,比如说定位到页面body后进行操作。

复制代码

# coding=utf-8
import timefrom selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutExceptionbrowser = webdriver.Chrome(executable_path="G:/dj/chromedriver.exe")browser.set_window_size(1400, 900)def search():try:browser.get("https://www.taobao.com")for i in range(5):browser.find_element_by_tag_name('body').send_keys(Keys.SPACE)time.sleep(1)except TimeoutException:search()search()

复制代码

方法⑤:鼠标移动到指定元素位置

复制代码

# coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChainsbrowser = webdriver.Chrome("G:/dj/chromedriver.exe")browser.set_window_size(1400, 900)def search():try:browser.get("https://www.taobao.com")target = browser.find_element_by_css_selector('body > div:nth-child(29)')actions = ActionChains(browser)actions.move_to_element(target)actions.perform()except TimeoutException:search()search()

复制代码

方法⑥:操作滚动条实现

复制代码

"""
设置JavaScritp脚本控制滚动条
"""
js = "window.scrollTo(0, 1000)"  # (0:水平距离;1000:垂直距离;单位像素px)"""
WebDriver调用JavaScritp脚本方法
"""
driver.execute_script(js)# 提示:
"""最顶层"""
js = "window.scrollTo(0,0)""""最底层"""
js = "window.scrollTo(0,1000)"
# 注:1000不代表一定到最底层,要根据浏览器页面的实际大小。"""
直接操作垂直距离的方式
"""
js = "var q=document.documentElement.scrollTop=n"

复制代码

示例:

复制代码

"""
1.学习目标:掌握浏览器滚动条的操作方法
2.语法2.1使用js语言编写控制滚动条代码参数:0,表示水平距离;10000,表示垂直距离  单位:px格式:向下滚动:window.scrollTo(0,10000)向上滚动:window.scrollTo(0,0)2.2使用selenium中方法执行js代码driver.execute_script(js代码)
3.需求在页面中,控制滚动条
4.总结如果需要测试写的js代码,可以在浏览器F12,控制台console中执行查看结果。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep# 2.打开浏览器
driver = webdriver.Chrome()# 3.打开页面
url = "https://www.taobao.com"
driver.get(url)
sleep(2)# 4.滚动条操作
# 4.1 滚动条向下滚动
js_down = "window.scrollTo(0,1000)"
# 执行向下滚动操作
driver.execute_script(js_down)
sleep(2)# 4.2 滚动条向上滚动
js_up = "window.scrollTo(0,0)"
driver.execute_script(js_up)
sleep(2)# 向下滚动操作
# n为从顶部往下移动滚动距离
js1 = "var q=document.documentElement.scrollTop=2000"
driver.execute_script(js1)
sleep(2)# 5.关闭浏览器
driver.quit()

复制代码

注意:

window.scrollBy(0, 100):从当前位置向下滚动100像素;

window.scrollTo(0,100):从0滚动到100像素,

这两个方法都是滚动操作,但是scrollTo方法只会从0像素滚动到100像素,除非修改数值才可以滚动到对应像素位置,二scrollBy则会一直向下滚动。

复制代码

# coding=utf-8
import timefrom selenium import webdriver
from selenium.common.exceptions import TimeoutExceptiondef search():t = Truetime.sleep(1)while t:driver.execute_script("window.scrollBy(0, 1000)")try:driver.find_element('link_text', '没有更多推荐了,返回首页').click()time.sleep(1)t = Falseexcept TimeoutException:search()if __name__ == '__main__':driver = webdriver.Chrome()driver.get("https://blog.csdn.net/sily_z/article/details/80733267")driver.maximize_window()

复制代码

这篇关于python之selenium操作下拉滚动条方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104594

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2