从零开始,轻松打造Web自动化测试框架:Python+Selenium实战指南

news2024/11/17 7:46:58

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

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

如果在招聘网站搜索「测试工程师」的职位,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 中输出如下信息:

最后感谢每一个认真阅读我文章的人,作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的学习资源,如果你用得到的话可以直接拿走,希望能给你前进的路上带来帮助。(包括Python编程、WEB自动化测试、app自动化测试、接口自动化测试、测试框架、持续集成、自动化测试开发、性能测试、安全测试、大厂面试真题、简历模板等等、当然还有一些测试基础、工具、app测试、接口测试、linux、mysql数据库等基础知识),相信能使你更好的进步!这些学习资料,

获取方式:留言【软件测试学习】即可免费获取

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

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

相关文章

广州虚拟动力亮相2023世界元宇宙生态博览会,邀您解锁元宇宙商机

2023年5月10-12日 2023第2届世界元宇宙生态博览会 在广州广交会展馆正式举办! 广州虚拟动力携虚拟数字人全栈式解决方案参展 诚邀您莅临3.2馆A109-A110展位参观交流 2022年全国多个地方出台元宇宙政策文件,各地方政府的元宇宙产业扶持政策也在逐渐细…

webshell及工具

目录 一,Webshell的概念 二,eval函数的定义和用法 三,连接工具菜刀 3.1文件管理 3.2 虚拟终端 3.3 菜刀与burpsuite联动 四,哥斯拉的使用 五,冰蝎 六,webshell分类 七,webshell如何连接 …

哪个牌子的电视盒子好用?罗鹏数码盘点2023电视盒子排名

电视机资源少、卡顿,配置不足的时候只需要安装一台电视盒子就可以解决这些问题,不需要花费大价钱更换电视机。那么,你知道哪个牌子的电视盒子好用吗?今天罗鹏就来详细聊聊这个话题,分享2023最新电视盒子排名。 一&…

在家经济性雾视训练

如何使用睛延宝进行雾视训练,才能缩轴控度? 雾视的相关概念 首先大家要知道什么是雾视? 顾名思义,雾视就是眼睛看目标物时有点模糊,好像有层雾。 雾视的效果:放松睫状肌,拉薄晶状体,增厚脉络膜。 原理就…

如何与劳氏 Lowe‘s 建立EDI连接?

劳氏Lowes(以下简称:Lowes)是专门从事家庭装修的美国零售公司,而 EDI 则是电子数据交换的缩写,是指通过计算机网络进行企业间电子数据交换的一种标准化方式。 通过 EDI,企业与Lowes之间可以直接交换各种商…

【Java笔试强训 35】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年会抽奖…

六、FM1288调试方案-调试过程及细节

本篇文章,主要讲述实际调试操作:具体到需要调节哪些寄存器,调节完后,会有什么样的变化。但是整体效果不能达到我们期望的绝对感觉,所以我先把我们调试的结果放在前面,如果觉得不理想,也可以不看后面的内容了。 文章目录 1. 调试准备1.1 建立与FM1288芯片通信1.2 Uart结…

IPv6有哪些优势?

现有的互联网是在IPv4协议的基础上运行的。IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,而地址空间的不足必将妨碍互联网的进一步发展。 为…

1.100ASK-V853-PRO编译烧写

100ASK_V853-PRO 环境配置及编译烧写 0.前言 本章主要介绍关于100ASK_V853-PRO开发板的Tina SDK包的下载和编译打包生成镜像,并将镜像烧录到100ASK_V853-PRO开发板上。在进行100ASK_V853-PRO开发板的环境配置前需要获取配置虚拟机系统,可以参考&#x…

【HA】HomeAssistant 添加 小米温湿度计2代

本方法只是被动的获取小米温湿度计广播出的温度和湿度数据,并没有其他更多功能。 0. 本人配置 树莓派3B Debian 11 (Bullseye) 64 位 Supervisor 2023.05.dev0901 HomeAssistant 已安装 HACS 1. 安装 打开侧边栏中的HACS,点击“集成” 右下角找到“…

ACM - DP - 提高2 (状态机 + 状态压缩 + 区间 + 树形 + 数位 + 单调队列优化 + 斜率优化)

DP 类型题二 【跳转DP 类型题一 (模型:数字三角形最长上升子序列背包】一、状态机模型1、AcWing 1057. 股票买卖 IV :两个状态转换2、AcWing 1058. 股票买卖 V :三个状态转换3、AcWing 1052. 设计密码 :T 维状态转换 …

IDEA创建接口类和接口实现类

IDEA创建接口类和接口实现类 IDEA创建接口类IDEA创建接口实现类 以创建Dao包下的代码为例。 IDEA创建接口类 选中要创建接口类的package,右键菜单依次选择New——Java Class。 在弹出的界面中,将创建的对象类型由Class改为Interface,如下图…

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以; Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk(最好是最…

“锻造”微生物组以帮助我们长寿和繁荣

谷禾健康 衰老通常伴随着心血管、神经和免疫系统等一系列疾病的风险增加。 虽然在理解微生物组导致与衰老相关的个别疾病的细胞和分子机制方面取得了显著进展,我们在之前的文章也有这方面的阐述: 肠道微生物群与健康长寿 肠道微生物群的老化及其对宿主免…

二、Linux入门| shell运行原理及Linux权限的理解

一、Linux 软件包管理器 - yum centos7的安装方式 1、源码安装(较复杂) 2、rpm包安装(较复杂,未解决依赖关系) 3、yum安装(不用编译源码,不用解决软件的依赖关系,门槛较低&#xff…

LeetCode4. 寻找两个正序数组的中位数

写在前面: 题目链接:LeetCode4. 寻找两个正序数组的中位数 编程语言:C 题目难度:困难 一、题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中…

英文论文润色哪家好用比较好,有值得推荐的吗

英文论文润色 推荐 英文论文润色对于写作者来说是一项十分重要的任务,它可以帮助我们修改文章中的语法、标点和排版等问题,使论文更加准确和易读。在众多的英文润色软件中,147chatgpt改写润色软件是一款值得推荐的全自动批量图文润色、自动纠…

SSM框架学习-核心容器小结

1. 容器相关 Spring核心容器中的容器是指容器对象,用于管理和装配Bean。它主要包含以下四个容器: BeanFactory容器:是最简单的容器,提供实例化、配置和管理对象的基本功能,但不提供AOP、事务管理等高级功能。 Applica…

三分钟,带你了解零代码开发

企业数字化转型如火如荼的进行,五花八门的零代码、低代码工具正如雨后春笋一般出现,那么零代码开发是什么? 阅读本文您将了解: 零代码开发是什么零代码与企业数字化转型零代码开发带来的效益简道云零代码平台应用实例 一、零代…

3ds Max云渲染有多快,3ds Max云渲染怎么用?

本地渲染效果图和动画3D项目是一个非常耗时的过程,当在场景中使用未优化的几何体或在最终渲染中使用大量多边形模型时,诸如此类的变量最终会增加渲染项目所需的时间和处理器能力。随着提供的渲染服务的云渲染平台出现,越来越多动画师、艺术家…