Python自动化:selenium常用方法总结

news2024/11/24 19:44:56

使用的Python版本为3.8,selenium版本为4.15.2

请添加图片描述

Python自动化:selenium常用方法总结

        • 1. 三种等待方式
        • 2. 浏览器操作
        • 3. 8种查找元素的方法
        • 4. 高级事件

1. 三种等待方式
  1. 强制等待
    使用模块time下的sleep()实现等待效果
  2. 隐式等待
    使用driver.implicitly_wait()方法,具有全局性,在代码前面设置后,整个程序运行过程中都会有效,都会等待页面加载完成,在执行后续,不需要每次设置一次。
    缺点:非要加载整个页面才执行代码,这样影响代码的执行效率。
    参考代码:
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(url='')
driver.implicitly_wait(5)
  1. 显示等待
    必须在每个需要等待的元素前面进行声明,明确要等到某个元素的出现或者某个元素的可点击等。 需要用到 :WebDriverWait 和 expected_conditions
    参考代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

ele = 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种查找元素的方法
  1. By.XPATH 通用的查找方式
    获取百度页面输入框
driver.find_element(By.XPATH,"//input[@id='kw']").send_keys('哈哈')
  1. By.CLASS_NAME 通过class属性查找
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys('哈哈')
  1. By.ID 通过id属性查找
driver.find_element(By.ID,"kw").send_keys('哈哈')
  1. By.CSS_SELECTOR 通过css选择器 会写css样式的就知道
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys('哈哈')
  1. By.NAME 通过name属性进行查找
driver.find_element(By.NAME,"wd").send_keys('哈哈')
  1. By.LINK_TEXT 通过链接文本
    在百度页面找到贴吧超链接并进入
driver.find_element(By.LINK_TEXT,"贴吧").click()
  1. By.PARTIAL_LINK_TEXT 部分链接文本
driver.find_element(By.PARTIAL_LINK_TEXT,"贴").click()
  1. By.TAG_NAME 通过标签元素
4. 高级事件
  1. 浏览器弹框
# 浏览器弹框
    driver.switch_to.alert
        .accept()  确认
        .dismiss() 取消
  1. 框架页
driver.switch_to.frame()

之所以用到这个,是因为有的页面可能不单单是一个页面,而是通过frame或者iframe标签元素把几个页面组合成一个页面。查找元素时需要注意的是,如果查找的元素不在当前页面下,那么需要找到对应页面,然后使用上述那个方法,跳到这个对应页面下,然后才能找到对应元素。
请添加图片描述

  1. 窗口切换
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 By


driver = 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()
# 释放

运行结果:
在这里插入图片描述
【注】:还有很多高级操作,这里只是总结最基础的而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例课5——小i机器人

1.公司介绍 小i机器人是上海智臻智能网络科技股份有限公司自主研发的智能机器人,以多语种自然语言处理、深度语义交互、语音识别和机器学习等人工智能核心技术为基础,面向企业服务、政务、医疗、制造等行业提供多样化的解决方案和完善的专业服务体系。 …

sdxl-turbo:adversarial diffusion distillation

【AIGC第三十一篇】SDXL Turbo:一种实时的文本到图像生成模型 - 知乎【 SDXL Turbo通过采用全新的蒸馏技术,实现了最先进的性能,能够以前所未有的质量进行单步图像生成,将所需的步骤数量从50步减少到仅需一步。这种创新技术大大提…

成都工业学院Web技术基础(WEB)实验七:Date、Math、Array对象使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

简单聊聊使用lombok 的争议

大家好,我是G探险者。 项目里,因为我使用了Lombok插件,然后代码走查的时候被领导点名了。 我心想,这么好用的插件,为啥不推广呢,整天写那些烦人的setter,getter方法就不嫌烦么? 领导…

在SpringData JPA 中实现对持久层的操作

1.导入依赖 hibernate 这个依赖自带实现JPA接口 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depen…

微信小程序、uniapp自定义底部导航栏(附源码)

需求分析 目前开发一套“同城跑腿平台”小程序&#xff0c;面向用户和骑手&#xff0c;需要两个不同的底部导航&#xff0c;uniapp原生导航不满足要求。所以需要自定义导航栏。 随着自定义导航卡完成&#xff0c;切换选项卡页面总是闪烁&#xff0c;在网上也没有搜到完整的解决…

性能监控体系:InfluxDB Grafana Prometheus

InfluxDB 简介 什么是 InfluxDB &#xff1f; InfluxDB 是一个由 InfluxData 开发的&#xff0c;开源的时序型数据库。它由 Go 语言写成&#xff0c;着力于高性能地查询与存储时序型数据。 InfluxDB 被广泛应用于存储系统的监控数据、IoT 行业的实时数据等场景。 可配合 Te…

Python安装基础之如何查看python版本、如何查看多个python版本

文章目录 前言最简单的验证手段查看python的路径直接查看python版本默认的python版本就是cmd进入的python关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小…

离散型随机变量的分布律(也称概率质量函数:probability mass function, PMF)

设是一个离散型随机变量&#xff0c;可能的取值为&#xff0c;取各个值的概率记为&#xff1a; &#xff08;1&#xff09; 其中 并且&#xff0c; 公式&#xff08;1&#xff09;就称为离散型随机变量的分布律&#xff0c;也称概率质量函数&#xff1a;probability ma…

Python 进阶(十三):JSON 序列化和反序列化(json 模块)

大家好,我是水滴~~ 本篇文章主要介绍json模块的功能,包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象,将JSON字符串反序列化为Python对象、反序列化时类型的对照表等。 文章中包含大量的代码示例…

安防 音响 车载等产品中音频接口选型的高性能国产芯片分析

在人工智能兴起之后&#xff0c;安防市场就成为了其全球最大的市场&#xff0c;也是成功落地的最主要场景之一。对于安防应用而言&#xff0c;智慧摄像头、智慧交通、智慧城市等概念的不断涌现&#xff0c;对于芯片产业催生出海量需求。今天&#xff0c;我将为大家梳理GLOBALCH…

arcgis for js 添加自定义叠加图片到地图坐标点上

在使用arcgis for js开发地图绘制图层时&#xff0c;可以通过相关api实现添加图标到某个坐标点&#xff0c;那么如果现在有一个需要添加一个小图叠大图的需求&#xff0c;又或者是自定义绘制图标&#xff0c;如何实现&#xff1f; 1、简单地绘制一个图标到底图图层上面 const…

[C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

文章目录 1、priority_queue1.1 priority_queue的介绍和使用1.2 priority_queue的使用模拟实现&#xff1a; 2、容器适配器2.1 什么是适配器2.2 STL标准库中stack和queue的底层结构 3、deque3.1 deque的原理介绍3.2 deque的缺陷 4、为什么选择deque作为stack和queue的底层默认容…

笔记本电脑word打字延迟特别大,但是浏览器中打字没有延迟,如何解决这个问题。

问题描述&#xff1a; 笔记本电脑word打字延迟特别大&#xff0c;但是浏览器中打字没有延迟&#xff0c;如何解决这个问题。&#xff08;之前以为是自己的电脑用了6年&#xff0c;用的时间久了&#xff0c;硬件老化导致的&#xff0c;本来想直接换电脑的&#xff0c;但是想着去…

计算机毕业设计 基于SpringBoot的电动车租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Kafka事务是怎么实现的?Kafka事务消息原理详解

目录 一、Kafka事务性消息1.1 介绍Kafka事务性消息1.2 事务性消息的应用场景1.3 Kafka事务性消息的优势 二、Kafka事务性消息的使用2.1 配置Kafka以支持事务性消息生产者配置消费者配置 2.2 生产者&#xff1a;发送事务性消息创建Kafka生产者开始事务发送消息提交或中止事务 2.…

【MySQL】在 Centos7 环境下安装 MySQL

环境搭建 一、检查环境二、检查系统安装包三、安装 mysql yum 源四、安装 mysql 服务五、启动服务六、登录 mysql七、配置 my.cnf 注意&#xff0c;我们搭建的 mysql 环境是在 Linux 的 Centos7 环境下安装的~ 一、检查环境 注意&#xff0c;我们在安装和卸载中&#xff0c;先…

前端面试(5)

1、移动端适配 1.1、设置meta缩放比例&#xff0c;将设备窗口调整为设计图大小。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,initial-sc…

用到了C语言的函数指针功能。

请选择一个功能&#xff1a; 1. 加法 2. 减法 3. 乘法 4. 除法 5. 取模 6. 阶乘 7. 判断素数 8. 球体体积 9. 斐波那契数列 10. 幂运算 11. 最大公约数 12. 最小公倍数 13. 交换数字 14. 排序 15. 退出 请选择一个选项&#xff1a; #include <stdio.h> #include <stdl…

区块链实验室(31) - 交叉编译Ethereum的客户端Geth

编译Geth到X86架构平台 下载Geth源码&#xff0c;直接编译Geth源码&#xff0c;见下图。用file命令观察编译后的文件&#xff0c;架构是x86-64。 编译Geth到Arm64架构平台 直接用命令行编译&#xff0c;同时指定期望的架构为Arm64。编译脚本如下所示。 CGO_ENABLED0 GOOSlin…