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 SafeConfigParser

from iniconfig import IniConfig


BOOLEAN_STATES = SafeConfigParser.BOOLEAN_STATES


def 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_ini


settings = load_uitest_ini(r'D:\pythonProject2\pytest.ini')  # 配置项目设置为全局变量

2.4 使用配置

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

import os

import pytest
from core.settings import settings

if __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 driver
    driver.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 ChromeOptions

driver = Remote(command_executor='http://192.168.3.16:4444/wd/hub',
                options=ChromeOptions())
driver.get("https://baidu.com")
input()

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cesium键盘控制模型

效果: 由于对添加模型和更新位置api进行二次了封装,下面提供思路 1.添加模型 const person reactive({modelTimer: null,position: {lon: 104.07274,lat: 30.57899,alt: 1200,heading: 0,pitch: 0,roll: 0,}, }); window.swpcesium.addEntity.addMo…

主流大语言模型从预训练到微调的技术原理

引言 本文设计的内容主要包含以下几个方面: 比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节:tokenizer、位置编码、Layer Normalization、激活函数等。大语言模型的分布式训练技术:数据并行、张量模型并行、流水线并行、3D 并行、零冗余优…

【教学类-43-16】 20240106 推算5-9宫格数独可能出现的不重复题量(N宫格数独模板数量的推算)

作品展示: 通过对各种已有结果的人工推算,目前得到两个结论 一、阶乘基本样式的数量【【123】【321】【231】【132】【312】【312】】6组 结论:阶乘等于出现的基本样式数量 以下N*N格会出现的最大排序数量(比如包含333222111这种…

玩转爱斯维尔 LaTeX 模板:定制技巧一网打尽!

简介 关于 LaTeX 小编写过一些推文: 适合撰写课程论文的 LaTeX 模板; LaTeX 常用数学符号汇总; 免费升级 overleaf 高级账户!; 如何下载使用期刊的 LaTeX 模板 本文基于常用的 Elsevier 期刊模板,小编分享个人常用的使用技巧&#xff0…

nvidia-smi 完整查看显卡型号

当我们在使用nvidia-smi查看显卡的型号的时候,会发现出现如下问题: 可以看到我们此时无法看到显卡的准确型号,只能看到NVIDIA GeForce ... 解决方法:使用如下命令即可完整显示显卡型号 nvidia-smi -L 如下所示:

APP自动化测试工具:八款推荐解析

如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。 uiautomator2 github地址:github.com/openatx/uia… UiAutomator 是 Google 提供的用来做安卓自动…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 🚀前言🚀管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 🚀在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…

新手养布偶猫如何选择猫主食冻干?K9、sc、希喂三个品牌推荐!

布偶猫是食肉动物,但由于肠胃脆弱敏感,所以在饮食上需要特别关注哦!为了给它们最好的呵护,现在有了主食冻干这种优质猫主食!它不仅符合猫咪的天然饮食习惯,还用了新鲜生肉做原料呢!营养满分不说…

我的隐私计算学习——联邦学习(2)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成 (三)联邦学习的算子 ------------------------ 算子是什么?--------------------------- ​ 从广义上讲,对任何函数进行某一项操作都可…

设计模式学习2

代理模式:Proxy 动机 “增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方案。在面向对象系统中,直接食用某些对象会带来很多问题,作为间接层的proxy对象便是解决这一问题的常见手段。 2.伪代码: class ISubject{ pu…

SPI知识大全

目录 SPI介绍SPI分为硬件SPI与软件SPISPI工作模式和时序图硬件SPI编写软件SPI编写拓展: SPI介绍 SPI(Serial Peripheral Interface)是一种常用的通信接口,用于在两个设备之间进行数据传输。它通常用于板级通信,具有高…

SolidUI Gitee GVP

感谢Gitee,我是一个典型“吃软不吃硬”的人。奖励可以促使我进步,而批评往往不会得到我的重视。 我对开源有自己独特的视角,我只参与那些在我看来高于自身认知水平的项目。 这么多年来,我就像走台阶一样,一步一步参与…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件,有如下一段话: 在构建 Redis 时,通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc,但在 Linux 系统上,jemalloc 是…

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

JDBC数据库访问——数据库操作

与指定的数据库建立连接后,就可以使用JDBC提供的API对数据库进行操作,包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后,对数据库表进行查询操作的步骤如下: ①创建statement对象 由已创建的Connection对象con调…

PID各种算法的基本优缺点

PID时间系数对PID本身的影响 积分时间过小积分作用增强。 微分时间过大,微分控制作用过强,容易产生振荡。 在这里的时间系统,一般指的是采样的时间,也就是PID控制的周期。在无人机当中一般采用10ms控制一次。 一般来说采样周期越小…

【Docker】容器的相关命令

上一篇:创建,查看,进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看,容器 aa…

如何在 Xftp 中使用自定义编辑器编辑远程服务器文件

1、简介 很多时候我们使用 Xshell 远程登录linux服务器进行文本编辑,通过命令行窗口难以进行快速编辑,因此,借助 Xftp 工具,指定文本编辑器,能够快速帮助我们实现文本编辑。 2、Xftp 使用 在上文中(https:…

软件工程概论------文件管理

目录 1.文件的相关概念 2.文件目录 3.位示图 4.索引文件 5.例题 1.文件的相关概念 文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。 逻辑结构:有结构的记录式文件、无结构的流式文件。 物理结构: 连续结构、链接结构、索引结构、多个物理块的索引表。 …