Selenium Web自动化测试学习笔记(一)
自动化测试
技术手段模拟人工,执行重复性任务,准确率100%,高于人工
selenium
可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以)的情况下依然可以进行,浏览器开20个窗口,每个都可以执行自己的代码
安装环境配置
Selenium
在pycharm控制台输入如下指令安装selenium第三方库
pip install selenium
安装成功
Webdriver浏览器驱动安装
https://googlechromelabs.github.io/chrome-for-testing/
我的chrome版本,大版本是136.0
stable的大版本与我的浏览器一致都是136.0
点击stable,确保chrome版本和chromedriver的大版本(136.0)一致
复制搜索该网址,自动开始下载,将下载后的压缩包解压缩后如下
将最上面的驱动文件复制粘贴到自己的pycharm项目下,后续只要输入相对路径即可
因为浏览器版本号更新的非常频繁,驱动器不能一更新就重新安装,因此需要关闭浏览器的自动更新 ,ctrl+R进入下面的运行台,输入services.msc回车
找到有关谷歌的如下所有谷歌开头的,启动类型全部改为禁用
右键点击属性,找到启动类型点禁用 ,点击应用,再点击确定
应用后如下
再次查看属性显示无法自动更新,说明设置禁用成功
此时浏览器和浏览器驱动都已经具备,自动更新也已经关闭
简单操作入门
01打开网页、关闭网页、浏览器
代码:
from selenium import webdriver # 操作浏览器
from selenium.webdriver.chrome.options import Options # 设置谷歌浏览器
from selenium.webdriver.chrome.service import Service # 管理驱动
import time#设置+启动浏览器
def set_lauch():#01创建一个用于设置浏览器的对象q1q1 = Options()#禁用沙箱-增加兼容性q1.add_argument('--no-sandbox')#保持浏览器打开(默认代码执行完自动关闭)q1.add_experimental_option('detach', True)#02创建浏览器a1并启动浏览器a1 = webdriver.Chrome(service=Service('chromedriver.exe'), options=q1)#return用于接收return a1a1 = set_lauch()
#打开指定网址
url = 'https://www.baidu.com'
a1.get(url)
time.sleep(3)#单位s
#只关闭当前标签页
a1.close()
#彻底退出浏览器,释放驱动
a1.quit()
结果 :打开三秒自动关闭
02 浏览器最大化、最小化
接着上面的代码
a1.maximize_window()#最大化
time.sleep(2)
a1.minimize_window()#最小化
03浏览器打开位置、尺寸(单位像素)
代码:
a1.set_window_position(200,0)
a1.set_window_size(600,10)
04浏览器截图&刷新当前网页
可应用于某个画面正在变化的网页,隔几秒就对这个网页进行截图并重新刷新
浏览器截图
代码:
a1.get_screenshot_as_file('1.png')
截图如下图所示,并不是电脑屏幕的截图,只针对这个浏览器页面的大小的截图
刷新当前网页
代码:
a1.refresh()
Selenium核心功能
元素概念
任何一个网页都是由各种各样的元素组成的,如按钮元素、图片链接元素、文字元素
01元素定位
例:用代码自动在百度的搜索框中输入自己想搜索的内容,元素定位的作用就是在百度这个页面自动定位找到搜索框这个元素
右键搜索框->点击检查,可快速定位到这个元素的前端代码
代码:导入包By
from selenium.webdriver.common.by import By#在元素定位里面需要定位的类型
八大定位
八大定位,如下图先导入By包以后,By.后面提示出现的8种定位类型如ID、NAME等就是Selenium的核心功能
定位一个元素(ID唯一)
代码:后面跟的是在检查页面检查到的搜索框的ID的value值kw
a2 = a1.find_element(By.ID, 'kw')
print(a2)
结果,找到了这个元素
定位多个元素
代码:
#07多个元素定位--返回列表
a3 = a1.find_elements(By.ID, 'kw')
print(a3)
定位多个元素返回的是一个列表
02元素交互
1)元素输入
代码:
#08元素输入--发送内容
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('dafait')
结果 :由代码自动完成输入
2)元素点击
找到百度一下这个按钮的id如下图所示为su
代码:
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰伦')
a2 = a1.find_element(By.ID,'su')
a2.click()
这里结合上面第一个元素交互操作元素输入为例,输入周杰伦并用代码进行百度一下这个搜索按钮的自动点击,得到结果如下图所示,成功输入周杰伦并点击了搜索按钮返回了百度匹配信息的结果
3)元素清空
操作代码:
a2.clear()
综合例子实战:
实现先在搜索框中输入周杰伦(不点击百度一下这个按钮),操作睡眠两秒(截图)后清空搜索框,再输入周杰伦年轻并点击百度一下按钮,操作睡眠两秒(截图)
代码:
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰伦')
a1.get_screenshot_as_file('周杰伦输入.png')
time.sleep(2)
a2.clear()
a2.send_keys('周杰伦年轻')
time.sleep(2)
a2 = a1.find_element(By.ID, 'su')
a2.click()
a1.get_screenshot_as_file('周杰伦年轻输入并点击.png')
程序代码自动截图结果如下图所示
后续笔记
Selenium Web自动化测试学习笔记(二)--八大元素定位-CSDN博客
相关文章:

Selenium Web自动化测试学习笔记(一)
自动化测试 技术手段模拟人工,执行重复性任务,准确率100%,高于人工 selenium 可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以&#x…...

2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业认证
2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证 立刻预约吧 文章目录 2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证立刻预约吧🔍 探索 AI 向量搜索的强大功能!🎯 学习路径目标Ὦ…...
服务器不备案有影响吗
在当今数字化的时代,服务器成为了众多企业和个人开展业务、展示自我的重要工具。然而,有一个问题常常被忽视,那就是服务器不备案到底有没有影响? 答案是肯定的!服务器不备案,影响可不小。据相关数据显示&a…...

EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展
一、引言 在数字化浪潮下,智能硬件蓬勃发展,从智能家居到工业物联网,深刻改变人们的生活与工作。音视频通讯作为智能硬件交互与协同的核心,重要性不言而喻。但嵌入式设备硬件资源受限,传统音视频方案集成困难。EasyRT…...
力扣-21.合并两个有序链表
题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution { public:ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {ListNode *l new ListNode(-1);ListNode *p l;while (list1 &&…...
多线服务器具有什么优势
在当今数字化飞速发展的时代,多线服务器宛如一位低调的幕后英雄,默默为我们的网络世界提供着强大的支持。那么,多线服务器到底具有哪些令人瞩目的优势呢 首先,多线服务器的最大优势之一就是网络访问的高速与稳定。想象一下&#x…...
ESP32 PWM音频应用及场景说明
ESP32芯片的PWM(脉冲宽度调制)功能在音频应用中具有广泛用途,尤其是在低成本、低功耗的场景中。以下是具体的应用举例和应用场景说明: 一、ESP32 PWM音频应用举例 1. 简单音频播放 实现方式:通过PWM生成模拟音频信号&…...
C++.变量与数据类型
C++变量与数据类型 1. C++变量与数据类型1.1 基本数据类型1.2 复合数据类型2.1 定义方式2.2 常量类型3.1 数据类型修饰符3.2 存储类修饰符3.3 类访问修饰符4.1 算术运算符4.2 关系运算符4.3 逻辑运算符4.4 赋值运算符4.5 条件运算符4.6 位运算符5. 总结5.1 变量与数据类型5.2 常…...
Compose笔记(二十二)--NavController
这一节主要了解一下Compose中的NavController,它是实现导航功能的核心组件,提供了强大而灵活的页面管理能力,用于管理导航图中的目的地和执行导航操作。 API navigate(route: String) 含义:导航到指定路由的目的地。 作用&#x…...
SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
目录 SELF JOIN(自连接) CROSS JOIN(交叉连接 / 笛卡尔积) 示例: SELF JOIN CROSS JOIN 如果没有 DATEDIFF() 函数怎么办? 🔍 SELF JOIN vs CROSS JOIN 对比总结 SELF JOIN(自…...
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1 场景背景 在某互联网大厂的技术面试中,技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情,但回答问题时总是带着幽默感,有时甚至让人哭笑不得。…...

Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio
Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio 前置条件 已经成功安装 kubesphere v4.3.1 参考教程: https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio 1. 安装基础依赖 # ubuntu安装基础依赖 apt insta…...

1.短信登录
1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时,后端会创建一个新的 token 并存入 Redis,但之前登录的 token 还没有过期。这可能会导致以下问题: 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …...

Linux-Ubuntu安装Stable Diffusion Forge
SD Forge在Win上配置起来相对简单且教程丰富,而在Linux平台的配置则稍有门槛且教程较少。本文提供一个基于Ubuntu24.04发行版(对其他Linux以及SD分支亦有参考价值)的Stable Diffusion ForgeUI安装配置教程,希望有所帮助 本教程以N…...

MixTeX - 支持CPU推理的多模态LaTeX OCR
文章目录 一、项目概览相关资源核心特性技术特点 二、安装三、使用说明环境要求 四、版本更新五、当前限制 一、项目概览 MixTeX是一款创新的多模态LaTeX识别小程序,支持本地离线环境下的高效CPU推理。 无论是LaTeX公式、表格还是混合文本,MixTeX都能轻…...
生成了一个AI算法
import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 1. 数据预处理 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) # MNIST单通道归一化 ]) train_da…...

23、DeepSeek-V2论文笔记
DeepSeek-V2 1、背景2、KV缓存优化2.0 KV缓存(Cache)的核心原理2.1 KV缓存优化2.2 性能对比2.3 架构2.4多头注意力 (MHA)2.5 多头潜在注意力 (MLA)2.5.1 低秩键值联合压缩 (Low-Rank Key-Value …...
关键字where
C# 中的 where 关键字主要用在泛型约束(Generic Constraints)中,目的是对泛型类型参数限制其必须满足的条件,从而保证类型参数具备特定的能力或特性,增强类型安全和代码可读性。 约束写法说明适用场景举例C#版本要求w…...

【算法专题十一】字符串
文章目录 1. leetcode.14.最长公共前缀1.1 题目1.2 思路1.3 代码 2. leetcode.5.最长回文字串2.1 题目2.2 思路2.3 代码 3. leetcode.67.二进制求和3.1 题目3.2 思路3.3 代码 4. leetcode.43.字符串相乘4.1 题目4.2 思路4.3 代码 1. leetcode.14.最长公共前缀 1.1 题目 题目链…...

美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进
打开 Settings 界面,依次选择 Editor -> Code Style -> Java,选择 Code Generation, 取消 Line comment at first column 和 Block comment at first column 的勾选即可, 1、Line comment at first column (行注释在第一列…...
如何为APP应用程序选择合适的服务器
搭建一个成功的APP应用程序,服务器选择是至关重要的决策之一。合适的服务器不仅能确保应用流畅运行,还能节省成本并保障安全性。本文将为您详细解析如何为APP选择最佳服务器方案。 一、了解您的APP需求 在选择服务器前,首先需要明确您的应用…...

赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG
XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一,集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU,并结合了 653,100 个逻辑单元与丰富的片上存储资源,可满足高性能计算、A…...

Android Camera HAL v3 and Video4Linux 2
《小驰行动派的知识星球》 ———————————————— 推荐阅读: 关于博主 《小驰Camera私房菜》小册目录 采用v4l2loopback来实现 虚拟Camera Camera基础及一些基本概念 Android Camera 学习路线 | 个人推荐 Android Camera开发系列(干货满满&a…...

基于pyqt的上位机开发
目录 安装依赖 功能包含 运行结果 安装依赖 pip install pyqt5 pyqtgraph pyserial 功能包含 自动检测串口设备,波特率选择/连接断开控制,数据发送/接收基础框架,实时绘图区域(需配合数据解析) ""&q…...
WHAT - Rust 智能指针
文章目录 常见的智能指针类型1. Box<T> — 堆上分配的数据2. Rc<T> — 引用计数的共享所有权(单线程)3. Arc<T> — 原子引用计数(多线程)4. RefCell<T> — 运行时可变借用(单线程)…...

CentOS 7 系统下安装 OpenSSL 1.0.2k 依赖问题的处理
前面有提到过这个openssl的版本冲突问题,也是在这次恢复服务器时遇到的问题,我整理如下,供大家参考。小小一个软件的安装,挺坑的。 一、问题 项目运行环境需要,指定PHP7.0.9这个版本,但是系统版本与软件…...

vue修改了node_modules中的包,打补丁
1、安装patch npm i patch-package 安装完成后,会在package.json中显示版本号 2、在package.json的scripts中增加配置 "postinstall": "patch-package" 3、执行命令 npx patch-package 修改的node_modules中的包的名称 像这样 npx patch-packag…...

[matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法
当我们目录包含有private,或者时候matlab搜索目录不让添加,比如截图: 在matlab2018以前这些都可以加进去后面版本都不行了。但是有时候我们必须要加进去才能兼容旧版本matlab库,比如mexopencv库就是这种情况。因此我们必须找到一个办法加进去…...
十七、统一建模语言 UML
统一建模语言(Unified Modeling Language,UML)是一种通用的建模语言,具有创建系统的静态结构和动态行为等多种结构模型的能力,具有可扩展性和通用性,适合于多种多变结构系统的建模。 统一建模语言的特点&am…...

OpenTelemetry 介绍
文章目录 1. 概述什么是OpenTelemetry发展历史与背景主要特点与优势2. 核心概念追踪(Tracing)指标(Metrics)日志(Logs)行李(Baggage)3. 主要组件API层SDK层数据收集器(Collector)导出器(Exporters)OTLP(OpenTelemetry Protocol)4. 集成方式语言支持(SDK)自动与手动插桩常见框…...