web自动化(6)——项目配置和Grid分布式

1. 框架的可配置性

项目之间的区别:

  • 兼容性:有些项目只兼容chrome,有些只兼容Firefox等
  • 元素定位特点:有些项目闪现快,有的项目很慢
  • 有些项目集成Jenkins,不需要用python生成allure报告

如果想要我们的框架在运用到一个新项目的时候,只需要修改一些配置文件,就需要我们框架本身就支持这些配置

2. 如何实现项目配置

三种方式

  • 启动参数
  • 配置文件
  • 环境变量(容器化)

2.1 找出配置项

  • driver_type:浏览器类型
  • wait_max:最长等待时间
  • wait_poo:最短的等待时间(频率)
  • allure_gen:是否生成allure报告
  • allure_show:是否自动打开allure报告
  • allure_path:指定allure报告的路径
  • 其它在代码中写的.....

2.2 保存到配置文件

为了不再生成更多文件导致管理混乱,我们可以在pytest.ini文件中新增一个条目用来保存我们的配置

其中,pytest条目下是pytest框架的配置,uitest下是我们ui自动化测试的配置

2.3 从配置文件中加载配置项

在core目录下创建settings.py

from configparser import SafeConfigParserfrom iniconfig import IniConfigBOOLEAN_STATES = SafeConfigParser.BOOLEAN_STATESdef load_uitest_ini(file):ini = IniConfig(file)  # 加载文件内容ui_ini = ini['uitest']d = {"driver_type": ui_ini.get("driver_type", "chrome"),"wait_max": float(ui_ini.get("wait_max", "10")),"wait_poo": float(ui_ini.get("wait_poo", "0.5")),"allure_gen": BOOLEAN_STATES[ui_ini.get("allure_gen", "true")],"allure_show": BOOLEAN_STATES[ui_ini.get("allure_show", "true")],"allure_path": ui_ini.get("allure_show", "report"),}return ui_inisettings = load_uitest_ini(r'D:\pythonProject2\pytest.ini')  # 配置项目设置为全局变量

2.4 使用配置

首先from core.settings import settings去导入配置,然后使用,举例我们的main.py可以修改为:

import osimport pytest
from core.settings import settingsif __name__ == '__main__':os.environ['NO_COLOR'] = '1'pytest.main()report=settings["allure_path"]if settings["allure_gen"]:os.system(f"allure generate ./temp/allure_results -o {report} --clean")  # 生成报告if settings["allure_show"]:os.system(f"allure open {report}")  # 展示报告

举例:使用配置——浏览器驱动,修改conftest.py中的driver

@pytest.fixture(scope='module')  # 这里设置scope=module是因为如果为函数级别的话,我们在test_user中第1个用例如果关闭了浏览器第二个用例就需要重新登录
def driver():driver = get_webdriver(settings["driver_type"])driver.implicitly_wait(5)driver.maximize_window()yield driverdriver.quit()

其它想要配置的选项可以根据以上示例进行添加即可。

3. selenium Grid

Grid组件让selenium支持分布式,用于分布式自动化测试,通过控制多台机器、多个浏览器并行执行测试用例,在测试用例比较多的情况下比较实用。

3.1 本地搭建Grid

配置JDK运行环境(自行百度吧,最好装高版本的,防止和selenium-server不兼容,安装好后在命令行使用Java -version验证下);

需要安装 Selenium Server 的 Jar 文件,下载地址:https://www.selenium.dev/downloads/

最后,在放置selenium-server的位置打开终端,通过命令行启动 Selenium Grid Server

java -jar selenium-server-4.16.1.jar standalone

其中selenium-server-4.16.1.jar是下载的selenium-server的文件名,启动后显示如下:

会有一个链接,点击后在浏览器会显示selenium-grid

图上sessins表示现在的任务数。

3.2 使用Grid中的浏览器

在项目新建a.py,

from selenium.webdriver import Chrome, Remote
from selenium.webdriver.chrome.options import Options as ChromeOptionsdriver = Remote(command_executor='http://192.168.3.16:4444/wd/hub',options=ChromeOptions())
driver.get("https://baidu.com")
input()

运行后会看到selenium-grid中session变成1

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

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

相关文章

QT上位机开发(数据库sqlite编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库…

Minio集群部署(docker版本)

先在/etc/hosts中添加虚拟域名 {ip} minio1 {ip} minio2 执行docker命令 docker run -it -d --name minio-01 --restartalways --nethost \ -e "MINIO_ROOT_USER{用户名}" \ -e "MINIO_ROOT_PASSWORD{密码}" \ -v /data/docker/minio/update:/data1 #…

三种方式在ASP.NET Core中实现代理功能请求获取数据的接口(以请求百度统计数据接口为例)

一、定义请求数据属性 TargetUrl参数是目标接口的URL,RequestDataArray参数是要发送的请求数据列表 //定义属性:TargetUrl参数是目标接口的URL,RequestDataArray参数是要发送的请求数据列表public class ToResponseBody{[JsonPropertyName("Target…

智能化校园:深入探讨云端管理系统设计与实现(二)

系列文章目录 智能化校园:深入探讨云端管理系统设计与实现(一) 文章目录 系列文章目录功能开发登录功能分析验证码功能实现登录校验功能登录后跳转功能 系统管理器实现验证码响应图片功能实现异步图片上传头像功能实现全局修改密码功能实现 …

YOLOv8改进 | 主干篇 | CSWinTransformer交叉形窗口网络

一、本文介绍 本文给大家带来的改进机制是CSWin Transformer,其基于Transformer架构,创新性地引入了交叉形窗口自注意力机制,用于有效地并行处理图像的水平和垂直条带,形成交叉形窗口以提高计算效率。它还提出了局部增强位置编码(LePE),更好地处理局部位置信息,我将其…

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时,我们经常会使用HttpClient库来发送HTTP请求,获取网页内容。然而,有些网站可能会对频繁的请求进行限制&#x…

前端工程化回顾-vite 构建神器

1.构建vite 项目 pnpm create vite2.常用的配置: 1.公共资源路径配置: base: ./, 默认是/2.路径别名配置: resolve: {alias: {: path.resolve(__dirname, ./src),ass: path.resolve(__dirname, ./src/assets),comp: path.resolve(__dirnam…

uni-app中实现元素拖动

uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…

springboot+redisTemplate多库操作

单库操作 我做了依赖管理&#xff0c;所以就不写版本号了添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置文件 spring:redis:database: 2…

勒索检测能力升级,亚信安全发布《勒索家族和勒索事件监控报告》

评论员简评 近期(12.08-12.14)共发生勒索事件119起&#xff0c;相较之前呈现持平趋势。 与上周相比&#xff0c;本周仍然流行的勒索家族为lockbit3和8base。在涉及的勒索家族中&#xff0c;活跃程度Top5的勒索家族分别是&#xff1a;lockbit3、siegedsec、dragonforce、8base和…

MatrixOne 1.1.0 Release

我们非常高兴地宣布&#xff1a; MatrixOne内核1.1.0版本 正式发布啦&#xff01; 项目文档网站 https://docs.matrixorigin.cn MatrixOne是一款分布式超融合异构数据库&#xff0c;MatrixOne旨在提供一个云原生、高性能、高弹性、高度兼容MySQL的HSTAP数据库&#xff0c;让…

Oracle database 12cRAC异地恢复至单机

环境 rac 环境 byoradbrac Oracle12.1.0.2 系统版本&#xff1a;Red Hat Enterprise Linux Server release 6.5 软件版本&#xff1a;Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1&#xff1a;172.17.38.44 byoradb2&#xff1a;172.17.38.4…

工具篇--Spring-Cloud--feign 通过feign 接口完成文件的下载

文章目录 前言一、feign接口获取文件流程&#xff1a;二、文件获取实现2.1 引入jar&#xff1a;2.2 实现&#xff1a; 总结 前言 通常在spring-boot 项目中&#xff0c;对于文件的下载都是直接调用到对应的服务中&#xff0c;而不是通过feign 接口获取文件&#xff1b;有时我们…

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码&#xff0c;找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…

HubSpot电子邮件自动化的关键功能和流程!

HubSpot提供了强大的电子邮件自动化工具&#xff0c;使用户能够创建、执行和跟踪复杂的电子邮件市场营销活动。以下是HubSpot电子邮件自动化的一些关键功能和流程&#xff1a; 1.电子邮件工作流程&#xff08;Email Workflows&#xff09;&#xff1a; 用户可以使用HubSpot的工…

机器学习笔记 - 偏最小二乘回归 (PLSR)

一、偏最小二乘回归:简介 PLS 方法构成了一个非常大的方法族。虽然回归方法可能是最流行的 PLS 技术,但它绝不是唯一的一种。即使在 PLSR 中,也有多种不同的算法可以获得解决方案。PLS 回归主要由斯堪的纳维亚化学计量学家 Svante Wold 和 Harald Martens 在 20 世纪 80 年代…

【零基础入门TypeScript】判断条件和循环

目录 定环 无限循环 示例&#xff1a;while 与 do..while 中断语句 句法 流程图 例子 继续语句 句法 流程图 例子 输出 无限循环 语法&#xff1a;使用 for 循环的无限循环 示例&#xff1a;使用 for 循环的无限循环 语法&#xff1a;使用 while 循环进行无限循…

LeetCode-轮转数组的三种方法(189)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 思路一&#xff1a; 建立一个两倍原数组长度的数组&#xff0c;然后其中保存两遍原数组中的元素&#xff0c;轮转的过程就可以看成是在这个新数组中截…

云计算:OpenStack 分布式架构管理VXLAN网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.各节点新增网卡准备VXLAN网络 3.控制节点配置私有网络 4.计算节点1配置私有网络 5.计算节点2配置私有网络 6.重启服务 7.修改Dashboard 8.新建项目&#xff08;租户&#xff09;及用户 9.新建网络与子网 10.新建实例 11.新建路由 12.新增浮…

物联网的网络管理技术开发

物联网并不是新的事物。不论称为物联网或者是传感网&#xff0c;物联网的基本组成可以看成为传感器网络接入互联网构成,当然也有仅仅是传感器网络组成的简单的物联网系统。但是总的来说,物联网有许多新的特点。这些特点导致物联网对于其网络的管理有新的要求。因此电信网和互联…