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博客

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

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

相关文章

TikTok 矩阵运营新手实操保姆级教程 2.0 版本

在当下这个全球化的数字浪潮中,TikTok 这片充满机遇的流量蓝海,正吸引着无数创业者和品牌方争相角逐。而要想在这激烈的竞争中脱颖而出,TikTok 矩阵运营无疑是至关重要的制胜法宝。今天,就给大家送上这份超实用的新手实操教程&…

使用DeepSeek协助恢复历史数据

最近,工作中遇到比较老的数据库备份文件数据恢复的问题。过程中使用DeepSeek分析,很快的解决了从除备份文件本身其他信息一概不知的条件下,数据库选型问题和环境搭建问题。下面把实施过程分享出来,给其他遇到相同问题的小伙伴提供…

【特殊场景应对6】频繁跳槽:行业特性与稳定性危机的解释边界

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…

企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢

随着Deepseek乃至AI人工智能技术在企业中得到了广泛的关注和使用,多数企业开始了AI探索之旅,迅易科技也不例外,且在不断地实践中强化了AI智能应用创新的强大能力。 为解决企业知识管理碎片化、提高内部工作效率等问题,迅易将目光放…

大连理工大学选修课——图形学:第三四章 基本图形生成算法

第三四章 基本图形生成算法 图形生成 概念:如何在指定的输出设备上,根据坐标描述,构造基本二维几何图形 基本二维几何图形:点、直线、圆、多边形域、字符串及相关属性等。 图形生成的概念 是在指定的输出设备上,根…

怎样避免住宅IP被平台识别

要有效避免住宅IP被平台识别,需从IP质量选择、环境参数伪装、行为模式模拟、技术细节处理等多维度构建防御体系。以下是基于行业实践的综合性解决方案: 一、确保住宅IP的高纯净度 选择真实家庭网络IP 验证IP是否归属真实家庭宽带(非机房IP伪装…

WPF 触发器 Trigger

触发器 Trigger 触发器(Trigger)是 WPF 中的一种机制: 当某个条件满足时,自动改变控件的某些属性,比如颜色、大小、透明度等。 换句话说,就是"如果……那么就……" 的一种规则。 常见触发器类…

NLP核心技术解析:大模型与分词工具的协同工作原理

文章目录 一、核心关系概述二、分词工具的核心作用三、未登录词(OOV)问题3.1 问题本质分析3.2 解决方案3.2.1 预对齐词汇表(最优解)3.2.2 子词回退策略3.2.3 词汇表扩展(适合专业领域) 3.3 技术选型建议3.4…

vscode预览模式(点击文件时默认覆盖当前标签,标签名称显示为斜体,可通过双击该标签取消)覆盖标签、新窗打开

文章目录 VS Code 预览模式如何取消预览模式(即“固定”标签页)?预览模式有什么用? VS Code 预览模式 在 VS Code 中,当你单击文件浏览器(例如,资源管理器侧边栏)中的某个文件时&am…

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?

接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎样练成的? user/_sleep 是什么? book-riscv-rev3.pdf 3.8节有对Xv6 binary文件的格式描述 Xv6 binaries are formatted in the widely-used ELF format, defined in (kernel/elf.h). An …

【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模块化部署,可在 AMD Instinct GPU 上实现可扩展 AI

AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模块化部署,可在 AMD Instinct GPU 上实现可扩展 AI 现代 AI 工作负载的规模和复杂性不断增长,而人们对性能和部署便捷性的期望也日益提升。对于在 AMD Instinct™ GPU 上构建 AI 和 HPC 未来…

【含文档+PPT+源码】基于微信小程序连锁药店商城

项目介绍 本课程演示的是一款基于微信小程序连锁药店商城,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带的…

node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)

前后端建议统一使用ESM 文章目录 Node.js模块化发展历程与标准对比一、模块化的意义1.1 解决的核心问题1.2 没有模块化的问题 二、CommonJS规范2.1 核心特征2.2 实现示例 三、AMD (Asynchronous Module Definition)3.1 特点3.2 代码示例 四、UMD (Universal Module Definition)…

人工智能与智能合约:如何用AI优化区块链技术中的合约执行?

引言:科技融合的新风口 区块链和人工智能,是当前最受瞩目的两大前沿技术。一个以去中心化、可溯源的机制重构信任体系,另一个以智能学习与决策能力重塑数据的价值。当这两项技术相遇,会碰撞出什么样的火花? 智能合约作…

RabbitMQ-api开发

前言 MQ就是接收并转发消息 核心概念 admin是用户 每个虚拟机上都有多个交换机 快速入门 引入依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.22.0</version></dependen…

PostgreSQL Patroni集群组件作用介绍:Patroni、etcd、HAProxy、Keepalived、Watchdog

1. Watchdog 简介 1.1 核心作用 • 主节点故障检测 Watchdog 会定时检测数据库主节点&#xff08;或 Pgpool 主节点&#xff09;的运行状态。 一旦主节点宕机&#xff0c;它会发起故障切换请求。 • 协调主备切换 多个 Pgpool 节点时&#xff0c;Watchdog 保证只有一个 Pg…

【多种不同提交方式】通过springboot实现与前端网页数据交互(非常简洁快速)

【多种不同提交方式】通过springboot实现与前端网页数据交互 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&am…

使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结

一、前言 AI 发展的如此迅速&#xff0c;有人想通过 AI 提效对视频的解析&#xff0c;怎么做呢&#xff1f; 豆包里面有 AI 视频总结的功能&#xff0c;可以解析bilibili网站上部分视频&#xff0c;如下图所示&#xff1a; 但有的视频解析时提示&#xff1a; 所以呢&#x…

鞅与停时 - 一种特别的概率论问题

讨论一个有趣的概率问题&#xff1a; [P3334 ZJOI2013] 抛硬币 - 洛谷 实际上是一个猴子打字问题&#xff0c;考虑一直无规律随即打字的猴子&#xff0c;键盘上只有A-Z一共26个字母&#xff0c;对于一个特定的字符串 S S S &#xff1a; ABCABCAB &#xff0c;能否在有限的打…

arcgis和ENVI中如何将数据输出为tif

一、arcgis中转换为tif 右键图层&#xff1a; Data -> Export Data, 按照图示进行选择&#xff0c;选择tiff格式导出即可&#xff0c;还可以选择其他类型的格式&#xff0c;比如envi。 二、 ENVI中转换为tif File -> Save As -> Save As (ENVI, NITF, TIFF, DTED) …