Web自动化——python
文章目录
- 1.八大元素定位
- 2.元素基本操作
- 3.浏览器常用操作
- 4.获取元素信息的常用方法
- 5.鼠标和键盘相关操作
- 6.元素等待
- 1.隐式等待
- 2.显示等待
- 7.下拉选择框
- 8.弹出框
- 9.滚动条操作
- 10.==frame表单的切换==
- 11.==多窗口切换==
- 12.==窗口截图、验证码处理==
1.八大元素定位
元素属性定位:id、name、class_name元素标签定位:tag_name超链接定位:link_text、paratial_link_text元素路径定位:XPathcss选择器定位:CSS
1.如果一次性定位一组元素,用find_elements,使用find_element会报错
2.元素基本操作
1.点击:click()
2.输入内容:send_keys()
3.清除:clear()
3.浏览器常用操作
1.浏览器最大化:maximize_window()
2.设置浏览器窗口大小:set_window_size(weigth,height)
3.设置浏览器窗口位置:set_window_position(x,y)
4.浏览器后退:back()
5.浏览器前进:forword()
6.浏览器刷新:refresh()
7.关闭当前窗口:close() 关闭的一般是主窗口
8.关闭驱动对象:quit()
9.获取页面title:title 获取的一般是主页面
10.获取当前页面的url:current_url 获取的一般是主页面
不切换窗口时,7 9 10都是操作的主窗口
4.获取元素信息的常用方法
1.获取元素大小:size
2.获取元素文本:text
3.获取属性值:get_attribute("xxx") 传递的参数是元素的属性名 判断一组元素是否是我们想要的值
在特殊应用场景中使用:
4.判断元素是否可见:is_displayed() 例如:element.is_display()
5.判断元素是否可用:is_enabled() 是否可以点击
6.判断元素是否被选中:is_selected() 用来检查复选框或者单选框的按钮是否被选中
5.鼠标和键盘相关操作
在selenium中将鼠标相关的操作封装在ActionChains,这些操作必须结合perform()执行
action = ActionChains(driver)
1.点击:click()
2.右击:context_click(element)
3.双击:double_click(element)
4.悬停:move_to_element(element)
5.拖拽:drag_and_drop(source,target)
6.执行:perform()
键盘相关操作:
selenium将键盘相关的操作都封装在Keys类中
1.删除键:send_keys(Keys.BACK_SPACE) BackSpace
2.空格键:send_keys(Keys.SPACE)
3.制表键:send_keys(Keys.TAB)
4.回退键(ESC):send_keys(Keys.ESCAPE)
5.回车键:send_keys(Keys.ENTER)
6.全选:send_keys(Keys.CONTROL,'a')
7.复制:send_keys(Keys.CONTROL,'c')
8.上传文件:send_keys(上传文件的路径)
6.元素等待
1.为什么要设置元素等待?
由于电脑配置原因或者网络配速问题,在查找元素时未被第一时间加载出来,会抛出未找到该元素的异常
2.什么是元素等待?
元素在第一次未被找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素就会继续执行代码,否则抛出未找到元素异常
1.隐式等待
隐式等待方法:
driver.implicitly_wait(timeout)
1.隐式等待是全局设置,设置一次应用于全局
2.一般情况下是前置必写代码
2.显示等待
selenium把显示等待的相关操作封装在WebDriverWait类中
WebDriverWait(driver,timeout,poll_frequency)
1.driver:浏览器驱动对象
2.timeout:超时的时长
3.poll_frequency:检测间隔的时间,默认是0.5s
element = WebDriverWait(driver,10,1).until(lambda x:x.find_element(By.ID,"ID"))
7.下拉选择框
标签:<select>
1.通过css定位(直接定位option)
2.通过使用select类来控制(控制父类)
select= Select(element)
select.by_index() 下标,从0开始
select.by_value() 根据value定位
select.by_visible_text(text) 根据文本定位
注意:
1.实例化select时,需要参数为select标签元素
2.调用select类下面的的方法,只通过索引、value属性值、显示文本去控制的,不需要click事件
8.弹出框
1.alert:警告框
2.confirm:确认框
3.prompt:提示框
对弹出窗一定要进行处理接下来的代码才能够运行,否则接下来的代码不生效
如何处理对话框?
1.获取弹出窗对象:alert = driver.switch_to.alert
alert.text:返回alert/confirm/prompt中的文字信息
alert.accept():接收对话框选项
alert.dismiss():取消对话框选项
9.滚动条操作
应用场景:页面注册同意条款,滚动条滚到最后才能点击同意
1.js = "windows.scrollTo(0,10000)" 先设置js控制滚动条语句 0:左边距;10000:上边距
2.driver.execute_script(js) 调用js执行代码
10.frame表单的切换
常见frame表单:frame、iframe两种
为什么要切换frame表单?
当同一个页面有很多表单时,浏览器无法主动从一个表单切换到另一个表单
如何切换frame表单?
1.driver.switch_to.frame(frame_reference)frame_reference:可以为frame框架的name、id或者定位到的frame元素(iframe)
2.driver.switch_to.default_content() --->恢复默认页面的方法 因为切换语句只有在主目录才有用
注意:从一个子frame表单切换到另一个子frame表单时要先恢复到默认页面,否则报错
11.多窗口切换
为什么要切换窗口?
selenium默认情况下只会在主窗口,如果不切换窗口,那么浏览器无法操作除了主窗口以外的窗口内的任何元素
如何切换窗口?
在selenium中封装了获取当前窗口的句柄、获取所有窗口的句柄和切换到指定窗口句柄的方法:
(句柄是窗口的唯一识别码)
1.driver.current_window_handle -->获取当前窗口的句柄
2.driver.window_handles -->获取所有窗口句柄
3.driver.switch_to.window(handle) -->切换到指定窗口句柄
12.窗口截图、验证码处理
窗口截图:
driver.get_screenshot_as_file(imgpath)imgpath:图片保存的路径 ./pic.png :保存在当前目录下,且图片名称为pic.png../image/pic1.png:保存在上级目录的image文件夹下,且图片名称是pic1.png
随机生成文件名:
driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%s")))
strftime:将时间转换成字符串函数
应用场景:多条case测试失败,可以使用时间戳的形式进行截图
验证码:
防止恶意请求
注:selenium没有对验证码的处理方法
常见的验证码处理方式:
1.去掉验证码(测试环境采用)
2.设置万能的验证码(生产环境和测试环境)
3.验证码识别技术(通过py-tesseract来识别图片验证码;识别率很难)
4.记录cookie(通过记录cookie进行跳过登录)推荐使用
selenium操作cookie:
1.get_cookie(name) -->获取制定cookie name是cookie
2.get_cookies() -->获取本网站所有的本地cookies
3.add_cookie(cookie_dict) -->添加cookiecookie_dict:一个字典对象,必选键包括:name、value
相关文章:
Web自动化——python
文章目录 1.八大元素定位2.元素基本操作3.浏览器常用操作4.获取元素信息的常用方法5.鼠标和键盘相关操作6.元素等待1.隐式等待2.显示等待 7.下拉选择框8.弹出框9.滚动条操作10.frame表单的切换11.多窗口切换12.窗口截图、验证码处理 1.八大元素定位 元素属性定位:id…...
华为OD 整数最小和(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
正则表达式:文本处理中的瑞士军刀
正则表达式是用于提取字符串规律的规则,通过特定语法表达,以匹配符合该规律的字符串。它具有通用性,不仅适用于Python,也可用于其他编程语言。 下面我用Python的re模块来进行实战演示:(记得import re&…...
WebSocket 入门案例
目录 WebSocket入门案例WebSocket-server新增项目:添加依赖:yml:启动类: frontend-server前端项目:添加依赖:添加yml:启动类:前端引入JS:前端页面:后端代码:测试: WebSocket 入门案…...
华为OD 最大社交距离(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
Nginx缓存
Nginx缓存 一般情况下系统用到的缓存有三种 服务端缓存:缓存存在后端服务器,如redis 代理缓存:缓存存储在代理服务器或中间件,内容从后端服务器获取,保存在本地 客户端缓存:缓存在浏览器 [ ] 什么时候会出现…...
Pyecharts绘图教程(2)—— 绘制多种折线图(Line)参数说明+代码实战
文章目录 🎯 1 简介🎯 2 图表配置项2.1 导入模块2.2 数据配置项2.3 全局配置项 🎯 3 代码实战3.1 基础折线3.2 平滑曲线(is_smooth)3.3 阶梯折线(is_step)3.4 空值过渡(is_connect_n…...
oracle实现搜索不区分大小写
<if test"code ! null and code ! ">and upper(code) like upper(%${code}%) </if>关键字upper...
C++中->与.的区别
在类中 在 C 中,-> 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别: 1. 对于指针类型的对象,必须使用 -> 来访问其成员;而对于非指针类型的对象,则需要使用 . 。 2. -> 运算符在实…...
大语言模型(LLM)综述(二):开发大语言模型的公开可用资源
A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…...
【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅳ—— 替换默认证书
目录 博文摘要6. 使用企业 CA 签发的 SSL 证书 替换 vSphere 默认 SSL 证书6.1 确认证书文件6.2 替换默认 vSphere 证书6.3 验证自签名证书6.4 补充说明 关联博文参考资料 博文摘要 博文主要描述了在 vCenter Server 8 上通过实用工具 certificate-manager 将 vSphere 默认 Ma…...
NI9234 4 通道, ±5 V, 24 位软件可选 IEPE 和 AC/DC模拟输入模块振动测试国产替代
NI的自动化测试和测量系统将助您打破桎梏,化不可能为可能。让我们携手合作,选择最适合您的硬件、软件和服务组合,为您提供全副武装,助您成就非凡。 购买NI的产品或服务,并非只是单纯的一次性交易行为。如果您有任何疑…...
宁波市:做大做强跨境电商 赋能外贸创新发展
近日,全国政协第十四届常委会第二次会议专题研究“构建新发展格局,推进中国式现代化”议题,市政协主席徐宇宁参加“推动高水平对外开放”专题小组讨论,全国政协副主席蒋作君到会听取发言,国家发改委、商务部相关司局负…...
为什么这些网站都在使用CFCA证书
在今天的数字时代,保障数据的安全至关重要,尤其是对于金融机构、政府部门和大型企业等组织而言。证书颁发机构在这一领域扮演着关键的角色,而CFCA(中国金融认证中心)证书已经脱颖而出,展现了其与其他证书的…...
Java编程规范(命名规则),Java程序的运行过程(执行流程)分析
编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用。 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码。命名规则包括以下几点。 包的名称由一个小写字母序列组成。类的名称由大…...
layui框架实战案例(21):layui table单元格显示图片导致复选框冗余的解决方案
图片自适应表格CSS 为防止单元格内的图片不能正常显示,需本地重写CSS。 /*layui-table图片自适应*/ .layui-table-cell {height: auto;line-height: 20px;}.layui-table-cell img {height: 50%;max-width: 50%; }列代码 , cols: [[{type: checkbox,fixed:left, w…...
指针常量和常量指针
大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 指针常量和常量指针光是这名字就让人头疼了。更何况还有细节问题要理清楚。 正文 命名 其实我…...
GitLab-访问返回403 forbidden问题处理
访问gitlab时报错forbidden 一般访问量大,密码错误频率高的时候,gitlab防爆机制启动了,对IP做了封禁,导致某些IP访问的是否返回 403 forbidden 1. 查看被封的IP /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/red…...
快来get策略模式,告别编程困惑,轻松变身编程高手✨
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一…...
UPS负载箱的工作原理是什么?
UPS负载箱(Uninterruptible Power Supply Load Bank)内部包含一组电阻器,通过调节电阻值来模拟不同负载条件。当UPS供电时,电阻器会吸收一定的电能,从而模拟实际负载对UPS的需求。UPS负载箱配备了控制系统,…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
