Selenium自动化测试详解

news2024/9/28 17:26:05

最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的代码,发现有些东西没有,有些方法又不相同,导致脚本不能运行,提醒我,看是否能花点时间,把selenium的内容好好梳理一下,从基础开始,到能够梳理出一个selenium的知识图谱更好。

整个内容可能不是一次能写完的,所以我打算分多次来写,如果各位看完后,有什么问题也可以发信息给我,我给大家解答一下,写这个也是为了方便在未来selenium还会有新的版本更新,以后也方便做个对比。
本次内容从一下几个方面来写吧:

  1. selenium的作用
  2. selenium版本的介绍
  3. selenium工作原理
  4. selenium安装
  5. 浏览器基本操作

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

京东内部员工自动化测试培训课程!盲目自学真的会毁终生,27天学完,能救一个是一个...

1、selenium的介绍

Selenium是Thought Works公司开发的一套基于web应用的自动化测试工具,直接运行在浏览器中,模拟用户操作。它可以被用于单元测试、集成测试、回归测试、系统测试、冒烟测试、验收测试,并且可以运行在各种浏览器和操作系统上。
目前使用selenium的人群大概有两大类吧,一类是软件测试工程师,他们可以通过selenium来实现自动化的测试,以提高回归测试的效率,降低人员的执行成本。第二类可能就是很多写爬虫的人,因为现在网页端爬取数据的人有很多,服务端做了很多的反爬策略,及各种限制如动态加载等,单独的通过接口来爬取数据的难度和可行性有所降低,而selenium可以模拟人为的在页面上执行各种操作,那么各种反爬的手段可能对它来讲也就没有什么意义了,当然也有人说,还有各种验证码也会有影响,验证码的问题我们今天先不谈,后面我看是否可以单独出一篇对验证码处理的文章。

2、selenium的版本介绍

selenium从发布到至今经历了1、2、3、4个版本,截止目前发布的最新版本是4.7版本,版本跨度最大的其实是1.0版本到2.0版本,1.0版本中包含了ide、Grid、core和rc四大部分,2.0在1.0基础上加入了webdriver,webdriver提供了更为简单的编程接口,弥补了1.0中Selenium-RC的一些不足和限制,对外提供了更简洁的restfull的API接口。

selenium1.0的主要内容:

  1. DE:可以通过IDE完成测试过程的录制和回放。主要用来给初学者了解selenium,但不适合直接作为日常自动化的测试。
  2. Grid:是selenium部署、测试及执行(分布式测试用例执行)。
  3. RC:selenium Remote Control,一个代理与控制器。
  4. Core:selenium的测试机制核心部分,包含测试用例集的执行,断言,由js代码组成,支持夸平台运行。

selenium2.0 = selenium1.0 + webdriver

3. selenium工作原理

3.1、客户端(selenium支持多种编程语言,所以客户端的请求可以使用各种语言来调用接口),selenium 通过调用WeDriver类的start方法去启动浏览器驱动,创建服务的启动。
3.2、通过服务端返回的session id,在下一次请求时,携带这个id,将客户端要执行的操作发送给服务端,服务端解析用户发送请求中的操作,并将操作指令发送给浏览器去执行。
3.3、浏览器执行客户端操作,并将操作的结果返回给服务端,服务端将执行结果进行封装,并返回给客户端。
客户端在启动服务端时,服务端会启动一个9515的端口用来与客户端连接,客户端调用selenium提供的方法,在由selenium将请求转化为对应的操作接口指令,根据操作指令调用对应的API接口,通过API接口调用将用户操作发送给浏览器端去执行。

这部分的内容需要在后续的过程中,解析代码来理解他的原理和过程。

4. selenium安装

安装selenium环境,这里以python 3.8的为例,安装完成python后,并且配置好python相关的环境变量,不懂的可以私信我。
需要安装的有:
1、selenium
2、浏览器驱动
3、浏览器

4.1 安装selenium

如果python环境已经安装完成,可以使用pip来安装selenium,在开始菜单中,输入cmd,打开dos窗口,执行下列命令

 4.2 安装浏览器驱动

安装浏览器驱动,需要根据浏览器来决定,使用不同的浏览器,就需要选择不同的浏览器驱动,浏览器驱动也需要根据浏览器的版本来考虑,所以浏览器、浏览器版本要与浏览器驱动及驱动版本向对应,下面列出几种常见浏览器的驱动下载地址
1、Chrome(Google)浏览器:http://chromedriver.storage.googleapis.com/index.html
先确定自己浏览器的版本,在chrome浏览器中的帮助中,查看关于,上面会显示浏览器版本,或者直接在浏览器url地址上输入chrome://settings/help,下面这个是我浏览器的版本

根据版本号,在驱动下载页面中,找到对应的版本


因为我是window的系统,所以我选择chromedriver_win32.zip,下载后,将里面的chromedriver.exe文件解压出来,其实放在哪无所谓,放的地方不同后面写代码时的处理会有所区别。一般建议放在path这个环境变量能访问到的位置,或者干脆放在python的安装目录下也行

2、Firefox(火狐)浏览器:Releases · mozilla/geckodriver · GitHub
采用同样的方式下载对应版本的geckodriver驱动,Firefox的版本和geckodriver的版本对应关系如下,也可以直接去官网查看,
官网地址:Supported platforms — Firefox Source Docs documentation

3、Edge :Microsoft Edge WebDriver - Microsoft Edge Developer
首先也是要确定Edge的版本,然后根据版本到官网下载驱动

4.3 安装浏览器

这部分内容就不再赘述,给为可以直接到官网下载安装即可,这里给新手们提醒下,安装过程中,最好不要修改安装的路径。

4.4 验证安装结果

打开pycharm,编写如下代码,如果可以打开对应的浏览器,并且跳转到百度页面,则说明安装成功。这里以Chrome浏览器为例

5. 浏览器基本操作

上面的代码中,已经说明了如何打开浏览器,并且跳转到指定的URL地址。下面说明下对浏览器的基本操作方法

 除了上面的基本操作外,也可以通过Option类来配置浏览器的启动

 这篇就先写到这里,后面会持续更新。。。。

6.写在最后

PS:我给大家整理了一套软件测试面试文档和一整套的软件测试资源,应该对朋友们跳槽面试、升职加薪、摆脱职业困境、提高自己的技术有很大的帮助,希望各位都能前程似锦。【点击文末小卡片免费领取软件测试全套资料】

资料包括:测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等。

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

C++初阶--类型模板

文章目录 泛型编程函数模板使用通用加法函数多模板参数必须用实例化 函数模板的原理类模板使用 注意事项 泛型编程 先看一个例子: 这是一些对于Swap重载的函数,区别是类型不同; 虽然能够重载使用,但代码复用率比较低&#xff0c…

技术分享| anyRTC之RTN网络

RTN(Real-time Network)中文名:实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络,RTN是对音视频的实时性又强烈要求的场景而设计的,原理上全球端到端的时延通过RTN网络…

vue2【相关介绍】

目录 1:什么是单页面应用程序 2:什么是vue-cli 3:安装使用 4:vue项目的目录结构:​编辑 5:了解src目录的构成: 6:vue项目的运行流程 7:el:容器名称&…

01-了解微服务架构的演变过程和微服务技术栈

微服务 微服务架构演变 单体架构:将业务的所有功能集中在一个项目中开发最后打成一个包部署 优点: 架构简单, 部署成本低,适合小型项目缺点: 耦合度高, 升级维护困难 分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发称为一个服务 优点: 降低服务耦合…

电脑显示msvcp140_1.dll丢失的5个常用解决方法,亲测可修复

常见于计算机操作中的"msvcp140_1.dll丢失"错误警示,往往令部分应用程序无法正常启动。为了解决这个问题,我们需要采取一些措施来修复丢失的文件。本文将介绍6个解决msvcp140_1.dll丢失的方法,帮助大家快速恢复计算机的正常运行。 …

SpatialFeaturePlot画图是空的

stmeta.datadplyr::left_join(stmeta.data,coor[,c(3,7:8)],by"barcodes") SpatialFeaturePlot(st,features "test",images "P02") 做了上述操作之后画出的图是空的 原因,left_join之后自动把stmeta.data的行名变成了1&#xff0…

算法---腐烂的橘子

题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

电机应用开发-编码器的使用

目录 编码器 增量式编码器倍频技术 常用编码器测速方法:M法、T法和M/T法 STM32的编码器接口 编码器接口结构体 减速电机编码器测速实验 硬件设计 TIM3配置编码器 测速环节 步进电机编码器测速实验 编码器 增量式编码器倍频技术 增量式编码器输出的常见脉…

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用 1.概述 在学习51单片机过程中,选择了STC的12C2052AD型号单片机作为入门芯片。前几个课题实验使用默认的内部晶振烧录程序,运行都没有问题。 选择一个LED亮度渐变的课题做实验&…

【C++】构造函数详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Vue3 源码解读系列(九)——依赖注入

依赖注入 依赖注入用于祖先组件向后代组件传递数据。 特点: 祖先组件不需要知道哪些后代组件在使用它提供的数据。 后代组件也不需要知道注入的数据来自哪里。 /*** provide 的实现*/ function provide(key, value) {let provides currentInstance.provides // 当…

量子计算+物流!“最后一英里”配送难题Unisys成功实时决策

(图片来源:网络) 此前,供应链行业一直致力于手工操作,严重依赖于纸质系统。后来随着客户需求的不断变化,这种传统方法逐渐显出不足之处。供应链行业正在迅速转向现代化,采用自动化和数据驱动的…

【开源】基于微信小程序的音乐平台

项目编号: S 055 ,文末获取源码。 \color{red}{项目编号:S055,文末获取源码。} 项目编号:S055,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…

redis的一些操作

文章目录 清空当前缓存和所有缓存配置内存大小,防止内存饱满设置内存淘汰策略键过期机制 清空当前缓存和所有缓存 Windows环境下使用命令行进行redis缓存清理 redis安装目录下输入cmdredis-cli -p 端口号flushdb 清除当前数据库缓存flushall 清除整个redis所有缓存…

关于一些网络的概述

语义分割网络是一种基于深度学习的计算机视觉技术,它能够将图像中的每个像素分配给特定的类别,从而实现对图像中不同对象的精确识别和定位。近年来,随着深度学习技术的不断发展,语义分割网络在各个领域都取得了显著的进展。 早期的语义分割网络主要采用全卷积神经网络(FC…

大数据分析仓库Kylin

一、Kylin 定义 Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的 Hive 表。 二、Kylin 架构 A、REST Server 是应用程序…

操作系统基础操作

操作系统的启动 体系结构概念 CPU、I/O、内存-通过总线连接 操作系统一开始存放时没有放在内存里,而是当在DISK中,由BIOS提供相应支持 DISK:存放OSBIOS:基本I/O处理系统(计算机开机时可以让系统检测各种外设&#…

软文转化率如何提高,媒介盒子分享三大原则

决定软文推广的主要因素就在于软文内容,但是如何才能提高软文转化率呢?下面就让媒介盒子为你解答! 一、 软文类型 软文类型按照推广目标划分主要分为品牌软文、产品软文、营销软文。 ● 品牌软文 品牌软文的目的在于扩大品牌对群众的影响力…

基于Vue+SpringBoot的桃花峪滑雪场租赁系统

项目编号: S 036 ,文末获取源码。 \color{red}{项目编号:S036,文末获取源码。} 项目编号:S036,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

SpringCloud微服务 【实用篇】| Eureka注册中心、Ribbon负载均衡

目录 一:Eureka注册中心 1. Eureka原理 2. 动手实践 ①搭建EurekaServer ②服务注册 ③服务发现 二:Ribbon负载均衡 1. 负载均衡原理 2. 负载均衡策略 3. 懒加载 一:Eureka注册中心 前面已经分析了,无论是SpringCloud还…