当前位置: 首页 > news >正文

web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

1、  开发环境

win7 64

 

PyCharm 4.0.5

 

setuptools-29.0.1.zip

下载地址:setuptools-29.0.1.zip_免费高速下载|百度网盘-分享无限制

官方下载地址:setuptools · PyPI

 

python 3.3.2

 

mysql-connector-python-2.1.4-py3.3-win64

下载地址:mysql-connector-python-2.1.4-py3.3-winx64.msi_免费高速下载|百度网盘-分享无限制

官方下载地址:MySQL :: Download Connector/Python

 

selenium-3.0.2

下载地址1selenium-3.0.2.tar.gz_免费高速下载|百度网盘-分享无限制

官方下载地址:selenium · PyPI

 

火狐浏览器:47.0.2

 

geckodriver-v0.11.1-win64.zip

下载地址1geckodriver-v0.11.1-win64.zip_免费高速下载|百度网盘-分享无限制

官方下载地址:Releases · mozilla/geckodriver · GitHub

 

IE8

 

IEDriverServer

下载地址:http://pan.baidu.com/s/1bHhOC2

Chrome浏览器  54.0.2840.59 m

下载地址:ChromeStandaloneSetup.exe_免费高速下载|百度网盘-分享无限制

 

chromedriver_win32 2.2.5

下载地址1:http://chromedriver.storage.googleapis.com/index.html?path=2.25/

下载地址2:chromedriver_win32.zip_免费高速下载|百度网盘-分享无限制

PHP版本:Apache+PHP5.3

ftp服务器

2、  基本配置

安装完Python后,把chromedriver.exe,geckodriver和IEDriverServer.exe浏览器驱动,放到python安装目录(例:D:\Program Files\python33)下,如下



 

如果火狐浏览器不是安装在默认安装目录下,(例:D:\Program Files (x86)\Mozilla Firefox\),需要在path中添加firefox.exe所在的安装目录,否则会报错,类似如下:

Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line

然后重启浏览器和pycharm

 

3、  主要功能逻辑介绍

 

4、  框架功能简介

1、框架采用PHP web页面,管理页面对象,测试计划,测试用例,用例步骤,支持界面元素操作,支持函数执行

 

2、可通过配置文件灵活配置运行模式:

 支持按测试计划运行:一次运行单个、多个指定的测试计划;

 支持按测试用例运行:一次运行单条测试用例

 支持按照执行流水编号运行:每启动一种浏览器,每执行一次都会生成一个执行编号,按流水编号运行,会自动选择上次执行的浏览器,重复运行该计划对应的测试用例(注意:目前计划创建后,其拥有的测试用例保持不变,即无法删,减)

 

3、可通过配置文件,配置需要运行的浏览器,支持自由扩展

 

4、可通过配置文件灵活选择测试需要的web site,和数据库

 

5、可自动生成HTML可视化接口测试报告

 

6、可根据配置在测试完成后,自动发送测试报告邮件,邮件发送支持SSL加密发送和非SSL加密发送,同时支持往多个邮箱发送邮件

 

7、支持文件、控制台的日志打印,可分别控制开关

 

8、可集成Jenkins自动运行脚本

参考文章:为Jenkins添加Windows Slave远程执行python项目脚本

 

5、  服务端部署

参考 Web自动化测试-服务端测试环境部署.doc”文件

 

6、  框架模块详细介绍

a)   config

db_evn.conf包含不同环境的测试数据库,应用数据库的配置信息(目前仅用到了测试数据库

 

web_site包含不同环境的web站点信息,包括web url,帐号,密码,验证码(目前只用到了url

 

browser.conf提供浏览器类型配置,即需要进行测试的浏览器

 

ftp.conf: 提供ftp站点配置信息,包括host,port,用户,密码

 

 

log.conf包含日志配置信息,具体如下:

 

mail.conf包含邮件发送配置信息,如下,

注:不同类型的邮箱(发件人邮箱),需要修改配置文件为对应邮件服务器的host和端口

smtp.163.com:25

smtp.qq.com:465

 

report.conf包含测试报告文件配置信息,如下

 

runmodeconfig.conf包含运行模式配置信息

 

screenshot.conf:提供截图配置信息

 

 

test_env_swith: 提供环境切换



 

b)   publicpkg

broserconf.py浏览器配置类

 

database.py提供数据库初始化配置,封装数据库操作,增删改查等

 

ftp.py实现ftp上传下载,封装ftp操作

 

mail.py实现邮件发送

 

runmode.py运行模式配置类

 

web.py浏览器配置类

 

othertools.py: 工具类,实现其它功能,比如批量创建目录,转换php页面存储的数据,递归遍历指定目录下的特征文件

 

globalvar.py主要提供全局变量,全局实例等

注意:这里使用了__all__控制import * 能导入的名称(全局变量,全局实例等

 

seleniumutil.py主要是封装了selenium的一些基础操作,及极少部分的py函数,支持自由扩展

 

 

c)   web_auto_test

 

说明:

1、提供程序入口,测试计划,测试用例,测试步骤,测试报告类

2、因时间仓促及其他原因等,对象定义、设计上或多或少存在一些不合理的地方

 

7、  页面元素管理

 

8、  用例管理

注:

1、目前“操作”仅支持元素操作,执行函数

2、时间关系,仅实现了小部分操作

3、关于步骤断言的想法:这块可把断言看成是步骤,步骤失败则断言失败,用例也失败,否则成功

4、用例依赖:用例之间最好互不依赖,如果是按计划执行,可考虑调整计划中的用例执行顺序,如果是按照单个用例的执行,可在runmode.conf配置文件中按顺序添加全局初始化用例

5、我的感觉:ui自动化这块用例之间或多或少会存在依赖,因为元素的查找依赖页面,不同操作会打开不同的页面,如 果某个操作在某个页面失败了,没返回到另一个用例查找元素需要的页面,这会执行另一个页面的操作时是否也就意味着失败呢,除非每个用例之间做到了互不依 赖?时间关系,没来得及拿本框架去做更多实验,这块待研究

 

9、  测试计划管理

 

 

10、运行结果

 

11、源码下载

下载地址: 暂不打算开源

 

下载后解压,用pycharm导入项目即可

 

12、说明

1、时间有限,精力有限,暂且就到这吧,有需要的可以自己扩展、修改框架。

2PHP页面非本人编写,部分代码实现设计受其约束

最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

相关文章:

web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

1、 开发环境 win7 64 PyCharm 4.0.5 setuptools-29.0.1.zip 下载地址:setuptools-29.0.1.zip_免费高速下载|百度网盘-分享无限制 官方下载地址:setuptools PyPI python 3.3.2 mysql-connector-python-2.1.4-py3.3-win64 下载地址:mysq…...

【MyBatis】源码学习 05 - 关于 xml 文件解析的分析

文章目录前言参考目录学习笔记1、章节目录概览2、14.3:SqlSourceBuilder 类与 StaticSqlSource 类3、14.4.2:ResultMapResolver 类3.1、测试代码说明3.2、结果集 userMap 解析流程3.3、结果集 getGirl 解析流程3.4、鉴别器 discriminator 解析流程4、14.…...

代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II

977 有序数组的平方题目链接:977 有序数组的平方介绍给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。思路看到题目的第一反应,首先负数的平方跟正数的平方是相同的&…...

Ethercat系列(10)用QT实现SOEM主站

首先将SOEM编译成静态Lib库可以参考前面的博文(83条消息) VS2017下编译SOEM(Simle Open EtherCAT Master)_soem vs_CoderIsArt的博客-CSDN博客make_libsoem_lib.bat "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build" x86用QT创建…...

论文投稿指南——中文核心期刊推荐(科学、科学研究)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...

jQuery属性操作prop()、attr()和data()

jQuery 提供了一些属性操作的方法,主要包括 prop()、attr() 和 data() 等。通过这些方法,能够实现不同的需求。下面我们分别进行详细讲解。 1.prop() 方法 prop0 方法用来设置或获取元素固有属性值。元素固有属性是指元素本身自带的属性,如 …...

git的使用

1.git的四个区域: 2.常规git命令 git status 查看working directory哪些文件被更改了git add .把更改add到staging area,缓存的地方。改一个地方可以就先暂存一下,最后确认是哪些改动后再一起commit,以免不必要的版本。 在暂存区域&#xff…...

webpack生产环境配置

3 webpack生产环境配置 由于笔记文档没有按照之前的md格式书写,所以排版上代码上存在问题😢😢😢😢 09 提取css成单独文件 使用下载插件 npm i mini-css-extract-plugin0.9.0 -D webpack配置此时a,b提取成单独文件,并且…...

linux下安装jenkins

1.初始化Jenkins安装环境 系统版本:Red Hat Enterprise Linux 8.7 将脚本文件jenkins_install_env.sh 、 jenkins_install.sh和apache-maven-3.6.2-bin.tar.gz、jdk-8u251-linux-x64.tar.gz都上传到/usr/local/src目录下执行jenkins_install_env.sh脚本初始化Jenki…...

IGKBoard(imx6ull)-I2C接口编程之SHT20温湿度采样

文章目录1- 使能开发板I2C通信接口2- SHT20硬件连接3- 编码实现SHT20温湿度采样思路(1)查看sht20从设备地址(i2cdetect)(2)获取数据大体流程【1】软复位【2】触发测量与通讯时序(3)返…...

MyBatis——配置文件完成增删改查

1.首先先创建一个新的表,使用下面的sql语句 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20…...

Python内置函数 — all,any

1、all 源码注释: def all(*args, **kwargs): # real signature unknown"""Return True if bool(x) is True for all values x in the iterable.If the iterable is empty, return True."""pass 语法格式: all(iterable)…...

Pycharm配置QGIS环境

版本信息:QGIS: 3.22.16Pycharm:2022.3.2 (Community Edition)在QGIS官网下载安装包,下载稳定版本即可。配置步骤:安装完成后,使用Pycharm新建工程Python编译器选择之前配置好的编译器环境选择左侧第一个Vi…...

【C++】stack 与 queue

stack 与 queuestackSTL 容器中 stack 的使用模拟实现 stackqueueSTL 容器中 queue 的使用模拟实现 queuestack 在数据结构中,我们了解到,stack 栈结构,是一种先进后出的结构,并且我们是使用顺序表来进行实现栈的操作的。 STL 容…...

ARC142E Pairing Wizards

ARC142E Pairing Wizards 题目大意 有nnn个法师,编号为111到nnn。法师iii有强度aia_iai​,他计划打败强壮度为bib_ibi​的怪物。 你可以执行以下操作任意次: 选中一个法师,将它的强壮度增加1 一对法师(i,j)(i,j)(i,j)称为好的…...

Spark开发实战-主播打赏排行榜统计

(一)需求分析 计算每个大区当天金币收入排名前N的主播 背景: 我们有一款直播APP,已经在很多国家上线并运营了一段时间,产品经理希望开发一个功能,计算前N主播排行榜,按天更新排名信息&#xf…...

python 如何存储数据 (python 的文件和异常)

文章目录存储数据1. 使用 json.dump() 和 json.load()json.dump()2. 保存和读取用户生成的数据存储数据 很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据。不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结…...

第三章-OpenCV基础-8-绘图函数

前置内容 这篇内容不是本书内容,但后续用的到,特做记录。 使用OpenCV中不可避免需要用到各种绘图功能,比如绘制人脸库、显示人脸识别信息,那就需要用到OpenCV的绘图函数,这些函数包括cv2.line(), cv2.circle(),cv2.rectangle()…...

逆约瑟夫问题

约瑟夫问题可以说十分经典,其没有公式解也是广为人知的~ 目录 前言 一、约瑟夫问题与逆约瑟夫问题 1.约瑟夫问题 2.逆约瑟夫问题 二、思考与尝试(显然有很多失败) 问题分析 尝试一:递归/递推的尝试 尝试二:条件…...

MySQL之三大日志(更新中)

MySQL之三大日志(更新中) MySQL日志记录着数据库运行过程中的各种信息,包括:错误日志、普通查询日志、慢查询日志、二进制日志、中继日志、事务日志等。 综合上一篇《MySQL之"幻读"问题》涉及到事务,本文主…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...