Python自动化:selenium常用方法总结
使用的Python版本为3.8,selenium版本为4.15.2

Python自动化:selenium常用方法总结
- 1. 三种等待方式
- 2. 浏览器操作
- 3. 8种查找元素的方法
- 4. 高级事件
1. 三种等待方式
- 强制等待
使用模块time下的sleep()实现等待效果 - 隐式等待
使用driver.implicitly_wait()方法,具有全局性,在代码前面设置后,整个程序运行过程中都会有效,都会等待页面加载完成,在执行后续,不需要每次设置一次。
缺点:非要加载整个页面才执行代码,这样影响代码的执行效率。
参考代码:
from selenium import webdriverdriver = webdriver.Chrome()
driver.get(url='')
driver.implicitly_wait(5)
- 显示等待
必须在每个需要等待的元素前面进行声明,明确要等到某个元素的出现或者某个元素的可点击等。 需要用到 :WebDriverWait 和 expected_conditions
参考代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECele = WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(By.,''))
2. 浏览器操作
driver.maximize_window() # 最大屏幕
driver.minimize_window() # 最小屏幕
driver.quit() # 退出浏览器
driver.close() # 关闭当前页面
driver.set_window_size(width=,height=) # 设置浏览器的大小
driver.set_window_position(x=,y=) # 设置浏览器在电脑上显示的位置
driver.back() # 模拟浏览器后退按钮
driver.forward() # 模拟浏览器前进按钮
driver.refresh() # 刷新当前页面
driver.title # 当前页面的标题
driver.current_url # 当前页面的网址
3. 8种查找元素的方法
- By.XPATH 通用的查找方式
获取百度页面输入框
driver.find_element(By.XPATH,"//input[@id='kw']").send_keys('哈哈')
- By.CLASS_NAME 通过class属性查找
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys('哈哈')
- By.ID 通过id属性查找
driver.find_element(By.ID,"kw").send_keys('哈哈')
- By.CSS_SELECTOR 通过css选择器 会写css样式的就知道
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys('哈哈')
- By.NAME 通过name属性进行查找
driver.find_element(By.NAME,"wd").send_keys('哈哈')
- By.LINK_TEXT 通过链接文本
在百度页面找到贴吧超链接并进入
driver.find_element(By.LINK_TEXT,"贴吧").click()
- By.PARTIAL_LINK_TEXT 部分链接文本
driver.find_element(By.PARTIAL_LINK_TEXT,"贴").click()
- By.TAG_NAME 通过标签元素
4. 高级事件
- 浏览器弹框
# 浏览器弹框driver.switch_to.alert.accept() 确认.dismiss() 取消
- 框架页
driver.switch_to.frame()
之所以用到这个,是因为有的页面可能不单单是一个页面,而是通过frame或者iframe标签元素把几个页面组合成一个页面。查找元素时需要注意的是,如果查找的元素不在当前页面下,那么需要找到对应页面,然后使用上述那个方法,跳到这个对应页面下,然后才能找到对应元素。

- 窗口切换
objs = driver.window_handles
# 获取当前的窗口对象 列表
driver.switch_to.window(objs[1])
# 下标从0开始
4 . 滑块验证
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get(url='file:///D:/Sublime/vscode/Test/%E6%BB%91%E5%9D%97%E6%B5%8B%E8%AF%95/%E6%BB%91%E5%8A%A8%E9%AA%8C%E8%AF%81.html')
driver.maximize_window()
ele = driver.find_element(By.XPATH,"//div[@class='slider']")
# 滑块元素
ac = ActionChains(driver)
ac.click_and_hold(ele).move_by_offset(300,0).perform()
# 鼠标点击 握住 向右移动300像素
ac.release()
# 释放
运行结果:

【注】:还有很多高级操作,这里只是总结最基础的而已。
相关文章:
Python自动化:selenium常用方法总结
使用的Python版本为3.8,selenium版本为4.15.2 Python自动化:selenium常用方法总结 1. 三种等待方式2. 浏览器操作3. 8种查找元素的方法4. 高级事件 1. 三种等待方式 强制等待 使用模块time下的sleep()实现等待效果隐式等待 使用driver.implicitly_wait()方法&#…...
『开源资讯』JimuReport积木报表 v1.6.6 版本发布—免费报表工具
项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…...
每天五分钟计算机视觉:使用1*1卷积层来改变输入层的通道数量
本文重点 在卷积神经网络中有很多重要的卷积核,比如1*1的卷积核,3*3的卷积核,本文将讲解1*1的卷积核的使用,它在卷积神经网络中具有重要的地位。由于1*1的卷积核使用了最小的窗口,那么1*1的卷积核就失去了卷积层可以识…...
Java (JDK 21) 调用 OpenCV (4.8.0)
Java 调用 OpenCV 一.OpenCV 下载和安装二.创建 Java Maven 项目三.其他测试 一.OpenCV 下载和安装 Open CV 官网 可以下载编译好的包,也可以下载源码自行编译 双击安装 opencv-4.8.0-windows.exe 默认为当前目录 安装即解压缩 根据系统位数选择 将 x64 目录下 op…...
git 常用的使用方法
1.查看分支 $ git branch #查看本地分支 $ git branch -r #查看远程分支 $ git branch -a #查看所有分支 $ git branch -vv #查看本地分支及追踪的分支 2.创建分支 方法1 $ git branch 分支名 #创建本地分支 #将本地分支push,就创建了远程分支方法2 #创建本地分…...
使用Caliper对Fabric地basic链码进行性能测试
如果你需要对fabric网络中地合约进行吞吐量、延迟等性能进行评估,可以使用Caliper来实现,会返回给你一份网页版的直观测试报告。下面是对test-network网络地basic链码地测试过程。 目录 1. 建立caliper-workspace文件夹2. 安装npm等3. calipe安装4. 创建…...
一台是阿里云,一台是腾讯云,一台是华为云,一台是百度云等多种公有云混合安装K8S集群
1. 修改主机名称和添加hosts #永久修改主机名 hostnamectl set-hostname master && bash #在master01上操作,阿里云服务器 hostnamectl set-hostname worker1 && bash #在node01上操作,阿里腾讯云服务器 hostnamectl set-ho…...
期末速成数据库极简版【查询】(3)
目录 多表查询 【8】多表连接——内连接 🙂等值连接 🙂自然连接 🙂非等值连接 【9】多表连接——外连接 【10】交叉连接不考 【11】联合查询 【12】扩展多表连接 【13】嵌套查询 🙂 多表查询 【8】多表连接——内连…...
人工智能_机器学习061_KKT条件公式理解_原理深度解析_松弛变量_不等式约束---人工智能工作笔记0101
然后我们再来看,前面我们,拉格朗日乘子法,把带有条件的,问题,优化成了等式问题,从而, 构建拉格朗日乘子公式,进行实现了求解,但是在现实生活中,往往也有,很多不等式问题. 比如上面的这个,就是要求是h(x)<=0的情况下,函数f(x)的最小值. 可以看到,这个带有一个不等式的条件,…...
有关光伏电站绝缘阻抗异常排查分析-安科瑞 蒋静
近几年,光伏发电技术迅猛发展,光伏扶贫电站及分布式光伏使光伏发电走进千家万户。然而光伏发电设备运行期间仍存在隐患。及时发现并解决*常见异常运行故障,可以很大地提高光伏发电设备可利用率,是保证光伏发电设备正常运行、满足收…...
抓取真实浏览器设备指纹fingerprint写入cookie方案
一个关于抓取真实浏览器设备指纹写入cookie方案,用户访问页面获取到用户设备生成指纹id,通过js把指纹存入cookie,然后用php进行获取cookie存的指纹值到后台。 用途:追踪用户设备,防恶意注册,防恶意采集 浏…...
【华为OD题库-074】VLAN资源池-Java
题目 VLAN是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。定义一个VLAN ID的资源池(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表示,不连续的用单个整数表示&#…...
成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用
写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…...
OpenAI承认ChatGPT变懒惰,正在修复该问题
OpenAI旗下的官方ChatGPT账号在社交平台表示,已经收到了大量用户关于GPT-4变懒惰的反馈。 这是因为自11月11日以来,OpenAI就没有更新过该模型。当然这不是故意的,大模型的行为是不可预测的,正在研究修复该问题。 外界猜测&#x…...
归并排序与自然归并排序
归并排序 归并排序(merge - sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将已有的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,成为二路归并. 核心步骤讲解 归并排序的…...
22款奔驰GLS450升级HUD抬头显示 告别低头
随着科技飞速地发展,从汽车领域就可以看出,尤其是汽车的抬头显示器,一经推出就吸引了很多的车主。星骏汇小许Xjh15863 升级HUD抬头显示,HUD与汽车系统进行完整的数据信息连接,整合成大数据,然后将一些重要信…...
关于kotlin的属性委托,报错的,实际原因剖析
报错:Property delegate must have a ‘getValue(SecurityCheckView, KProperty*>)’ method. None of the following functions are suitable 解决方案:就是在根目录的build.gradle中改变 kotlin的插件版本 classpath “org.jetbrains.kotlin:kotli…...
HarmonyOS4.0从零开始的开发教程11给您的应用添加弹窗
HarmonyOS(十)给您的应用添加弹窗 概述 在我们日常使用应用的时候,可能会进行一些敏感的操作,比如删除联系人,这时候我们给应用添加弹窗来提示用户是否需要执行该操作,如下图所示: 弹窗是一种…...
js 同步任务和异步任务
同步任务和异步任务 同步任务 同步任务就是没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完,才会执行下一个任务。同步任务具有堵塞效果。 异步任务 异步任务是被引擎放在一边,不进入主线程进入任务队列的任务。只有引擎认为某个异步任…...
【小白专用】Sql Server 连接Mysql 更新23.12.09
目标 已知mysql连接参数(地址和用户),期望通过Microsoft Sql Server Management Studio (以下简称MSSSMS)连接Mysql,在MSSSMS中直接查询或修改Mysql中的数据。 一般是选最新的版本下载。 选64位还是32位&a…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
