快速搭建 Web自动化测试框架

news2025/1/11 4:16:44

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。

随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的业务要求,只能被企业逐步裁员淘汰。「自动化测试和持续测试」就成为了业界主流

如果在招聘网站搜索「测试工程师」的职位,95% 的招聘都会有「掌握自动化测试以及 Python」的相关要求。可以说,Python 自动化已经不是加分项了,而成了面试成功的必备技能。

所以,如果你正准备入行或者转岗做测试工程师的工作,Python 自动化测试将是必学技能之一。

Python + Selenium

说到自动化测试,就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一,支持快速开发自动化测试框架,且支持在多种浏览器上执行测试。

Selenium学习难度小,开发周期短。对测试人员来说,如果你编程经验不足,python + Selenium 是个很好的选择。语法简约,清晰,可以显著减少后期维护难度和工作压力。

今天,我们就介绍一下如何用 Selenium 快速开始 Web 测试工作!

(以下内容出自实验楼课程——「Python 自动化测试实战」,欢迎大家来实验楼边敲代码边练习!)

Selenium 基础知识

本节课程介绍 Selenium 的功能作用及安装、环境配置,并介绍 Selenium 常用的语法。

知识点

Selenium 介绍
安装 Selenium
安装 geckodriver 浏览器驱动
Selenium 的元素定位
点击元素
清空文本输入框、向文本输入框输入文本
获取元素属性
下拉页面
页面弹窗的定位以及弹窗文本的获取
窗口跳转
iframe 定位

安装需要的库:

sudo pip3 install --upgrade pip
sudo pip3 install selenium

实验环境

Firefox 浏览器
python 3.5
geckodriver 0.22.0
selenium 3

实验步骤

Selenium 在进行回归测试的时候会被经常用到,接下来我们就学习 Selenium 的知识。当我们进入selenium 官网时可以看到,网站的 title 上写的是 Selenium - Web Browser Automation,翻译过来就是网站浏览器自动化。也就是说我们把平时在网页上做的功能测试用 Selenium 代码实现,这样在回归测试的时候就可以达到省时省力的目的。Selenium 在工作中的应用常见于功能基本稳定、没有频繁大变动的网页。所以我们一般是在业务功能上线以后,为确保页面稳定,用 Selenium 实现自动化回归测试,结合 git、Jenkins 一起,每当有新功能上线时都会执行写好的 Selenium 代码以验证新上线的业务对原有页面功能没有造成影响。如有报错,则发送相应的通知,这样就可以确保对线上功能出现的未预期 bug 进行及时的修复。

安装 Selenium

在 xfce 中输入sudo pip3 install selenium安装最新版本的 Selenium。

浏览器、geckodriver

既然名为网页浏览器自动化自然要安装浏览器,一般来说,Chrome、Firefox等浏览器都可以,这里我们使用当前系统自带的Firefox作为实验浏览器。现在我们需要下载对应的浏览器驱动geckodriver,在xfce中输入以下命令:

$ wget https://labfile.oss.aliyuncs.com/courses/1163/geckodriver-v0.22.0-linux64.tar.gz

下载成功后继续输入:

$ tar zxvf geckodriver-v0.22.0-linux64.tar.gz
$ sudo mv geckodriver /usr/local/bin

以上操作为:将文件解压,并移动至/usr/local/bin文件夹中。

 将目录切换至桌面:

$ cd /home/shiyanlou/Desktop

下面我们来验证是否正常安装,在终端使用命令vim demo.py创建文件并写入代码:

#! /usr/bin/python3
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.shiyanlou.com")

输入python3 demo.py如果浏览器打开并进入实验楼网站,则环境配置就成功了。

浏览器操作

在终端使用命令vim demo2.py创建文件并写入代码:

#! /usr/bin/python3

from selenium import webdriver
from time import sleep


driver = webdriver.Firefox()

# 浏览器进入百度网站
driver.get("https://www.baidu.com")

# 设置浏览器宽800,高400
driver.set_window_size(800, 400)

# 等待3秒
sleep(3)

# 刷新页面
driver.refresh()

# 等待3秒
sleep(3)

# 最大化窗口
driver.maximize_window()

# 退出浏览器
driver.quit()

- name: check file
  script: |
    #!/bin/bash
    ls /home/shiyanlou/Desktop/demo2.py
  error:
    还没有在 /home/shiyanlou/Desktop 目录下新建 demo2.py 文件

以上代码会在浏览器中执行:

打开浏览器
进入百度网站
设置窗口大小为宽 800,高 400
等待 3 秒
刷新页面
最大化窗口
退出浏览器

演示

这里我们使用51Testing 软件测试论坛作为演示网站,如果大家没有账号需要先去注册一个,下面的代码将会使用到账号信息,在终端使用命令vim demo3.py创建文件并写入代码:

#! /usr/bin/python3
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
# 进入51testing网站driver.get("http://bbs.51testing.com/forum.php")
sleep(3)

# 用id定位账号输入框并输入账号
driver.find_element_by_id("ls_username").send_keys("您的用户名")

# 用id定位密码输入框并输入密码
driver.find_element_by_id("ls_password").send_keys("密码")

# 定位“登录”按钮并获取登录按钮的文本
txt = driver.find_element_by_xpath('//*[@id="lsform"]/div/div[1]/table/tbody/tr[2]/td[3]/button').text

# 打印获取的文本
print(txt)

# 定位“登录”按钮并获取登录按钮的type属性值
type = driver.find_element_by_xpath('//*[@id="lsform"]/div/div[1]/table/tbody/tr[2]/td[3]/button').get_attribute("type")

# 打印type属性值
print(type)

# 定位“登录”按钮并进行点击操作
driver.find_element_by_xpath('//*[@id="lsform"]/div/div[1]/table/tbody/tr[2]/td[3]/button').click()

在终端执行python3 demo3.py运行,结果显示如下:页面显示:

 执行以上代码后会在 xfce 中输出如下信息:

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

2024花15天学完自动化测试全套教程,简单易上手,允许白嫖,拿走不谢!

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

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

相关文章

中科驭数受邀成为移动云智能芯片开放实验室首批成员企业

4月28日至29日,2024中国移动算力网络大会在苏州举行。大会以“算力网络点亮AI新时代”为主题,全面展示了中国移动最新算力网络成果与能力。中科驭数作为移动云智能芯片开放实验室首批合作伙伴,受邀参加入驻仪式,中科驭数高级副总裁…

浅谈 HTTPS

文章目录 HTTPS 简介HTTPS 特点与 HTTP 的区别HTTPS 工作流程1. 服务端生成密钥对2. 服务端申请数字证书3. 服务端发送数字证书4. 客户端验证数字证书5. 客户端解析证书内容6. 客户端传送加密信息7. 服务端解密信息8. 双方协商生成会话密钥并交换9. 使用会话密钥进行通信 总结 …

vue+elementUI实现点击左右箭头切换按钮功能

原本是可以用el-tabs做的,就像下面的样式,但是领导说不行 最后用button和element里面的el-carousel(走马灯)结合了一下 长这样 感觉还不错 可以自己改样式 代码如下: <div class"drawer-carousel"><el-carousel arrow"always" :loop"false…

kotlinDSL控制的安卓项目导入已存在的模块后sync报错

原因很明显&#xff0c;但是我还找了好久 因为在import时并没有选择groove还是kotlin控制&#xff0c; 所以默认为groovy控制的&#xff0c;然而主项目是由kotlin dsl控制的grale行为。 原因清楚之后&#xff0c;就可以去检查一下&#xff0c;项目里是否包含了settings.gradle和…

【webrtc】MessageHandler 7: 基于线程的消息处理:切换main线程向observer发出通知

以当前线程作为main线程 RemoteAudioSource 作为一个handler 仅实现一个退出清理的功能 首先on message的处理会切换到main 线程 :main_thread_其次,这里在main 线程对sink_ 做清理再次,在main 线程做出状态改变,并能通知给所有的observer 做出on changed 行为。对接mediac…

记一次使用Notepad++正则表达式批量替换SQL语句

目录 一、需求二、解决方案三、正则解析 一、需求 存在如下SQL建表脚本&#xff1a; CREATE TABLE "BUSINESS_GOODS" ( "ID" VARCHAR(32) NOT NULL, "GOODS_CODE" VARCHAR(50), "GOODS_NAME" VARCHAR(100), ... NOT CLUSTER PRIMARY…

2024年Q1季度电子书线上市场数据分析:高端市场潜力巨大,销额同比超170%!

数字阅读设备的普及和互联网技术的不断进步&#xff0c;越来越多的读者选择使用电子书来获取知识和娱乐。在今年Q1季度中&#xff0c;电子书线上市场规模正在持续扩大。 根据鲸参谋数据显示&#xff0c;在线上电商平台&#xff08;某东&#xff09;电子书Q1销量累计约23.3万件…

动手学深度学习——从零实现softmax分类模型

1. 数据集 fashion mnist是一个由10个类别图像组成的服装分类数据集&#xff0c;共包含60000张训练集图像和10000张测试集图像&#xff0c; 前者用于训练模型参数&#xff0c;后者用于评估模型性能。 2.1 数据集下载 先进行依赖库导入&#xff1a; %matplotlib inline …

JENKINS 安装,学习运维从这里开始

Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarehttps://www.jenkins.io/download/首先点击上面。下载Jenkins 为了学习&#xff0c;从windows开始&#x…

ES集群分布式查询原理

集群分布式查询 elasticsearch的查询分成两个阶段&#xff1a; scatter phase&#xff1a;分散阶段&#xff0c;coordinating node会把请求分发到每一个分片gather phase&#xff1a;聚集阶段&#xff0c;coordinating node汇总data node的搜索结果&#xff0c;并处理为最终结…

【stomp 实战】Spring websocket 用户订阅和会话的管理

通过Spring websocket 用户校验和业务会话绑定我们学会了如何将业务会话绑定到spring websocket会话上。通过这一节&#xff0c;我们来分析一下会话和订阅的实现 用户会话的数据结构 SessionInfo 用户会话 用户会话定义如下&#xff1a; private static final class Sessio…

03 - 步骤 Kafka producer

简介 Kafka producer 步骤&#xff0c;用于将 Kettle 中经过处理或转换的数据发送到 Kafka 的主题中 使用 场景 我需要把经过Kettle处理完的数据发送到一个Kafka中&#xff0c;让后端服务器进行下一步处理。 1、拖拽 Kafka producer 到面板 2、配置 Kafka producer 3、调试…

FSD自动驾驶泛谈

特斯拉的FSD&#xff08;Full-Self Driving&#xff0c;全自动驾驶&#xff09;系统是特斯拉公司研发的一套完全自动驾驶系统。旨在最终实现车辆在多种驾驶环境下无需人类干预的自动驾驶能力。以下是对FSD系统的详细探讨&#xff1a; 系统概述 FSD是特斯拉的自动驾驶技术&…

架设WebSocket的最后一环,如何设置好nginx反向代理

WebScoket都已经完工快一个月&#xff0c;经过一段时间的测试&#xff0c;公司还是准备把服务器换到鹅厂&#xff0c;用EO来解决CDN内容分发和DDOS防护问题&#xff0c;由于EO并不支持URL 路径转发&#xff0c;只支持转发到一个站点的80或则443端口&#xff0c;如果想做路径分发…

从Paint 3D入门glTF

Paint 3D Microsoft Paint 3D是微软的一款图像编辑软件&#xff0c;它是传统的Microsoft Paint程序的升级版。 这个新版本的Paint专注于三维设计和创作&#xff0c;使用户可以使用简单的工具创建和编辑三维模型。 Microsoft Paint 3D具有直观的界面和易于使用的工具&#xff0…

小程序地理位置权限如何申请?

这篇内容会教大家如何快速申请“获取当前的地理位置&#xff08;onLocationChange&#xff09;”接口&#xff0c;以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验&#xff0c;来之不易&#xff0c;望大家给予鼓励&#xff01; 小程序地理位置接口有…

百川crm系统 汽车销售租赁CRM客户管理系统是不可或缺的利器?

在竞争激烈的汽车销售租赁市场中&#xff0c;如何提升客户满意度、优化业务流程、提高销售效率&#xff0c;成为了每一家汽车销售租赁公司必须面对的问题。而CRM&#xff08;客户关系管理&#xff09;客户管理系统&#xff0c;正是应对这些挑战的重要利器。本文将从汽车销售租赁…

18 如何设计微服务才能防止宕机?

在上一讲里&#xff0c;介绍了构建一个稳健的微服务的具体法则&#xff1a;防备上游、做好自己、怀疑下游&#xff0c; 并介绍了为什么要防备上游&#xff0c;以及一些防备上游的具体手段。 在本讲里&#xff0c;咱们一起来学习&#xff0c;做好微服务自身的设计和代码编写的常…

ollama-python-Python快速部署Llama 3等大型语言模型最简单方法

ollama介绍 在本地启动并运行大型语言模型。运行Llama 3、Phi 3、Mistral、Gemma和其他型号。 Llama 3 Meta Llama 3 是 Meta Inc. 开发的一系列最先进的模型&#xff0c;提供8B和70B参数大小&#xff08;预训练或指令调整&#xff09;。 Llama 3 指令调整模型针对对话/聊天用…

Centos7+Hadoop3.3.4+KDC1.15+Ranger2.4.0集成

一、集群规划 本次测试采用3台虚拟机&#xff0c;操作系统版本为centos7.6。 kerberos采用默认YUM源安装&#xff0c;版本为&#xff1a;1.15.1-55 Ranger版本为2.4.0 系统用户为ranger:ranger IP地址主机名KDCRanger192.168.121.101node101.cc.localKDC masterRanger Admin…