”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 硒架构

硒架构

发布于2024-08-31
浏览:290

Selenium 是一种开源自动化工具,用于跨各种 Web 浏览器测试 Web 应用程序。

它可以针对各种浏览器(如 Firefox、Chrome、Opera、Microsoft Edge 等)测试所有 Web 应用程序。并且测试可以使用多种编程语言进行编码,如 Python、JAVA、Ruby、Perl...

Selenium Web 驱动程序

Selenium Web Driver 是一个开源库,是 Selenium 自动化框架的关键组件。

它用于实时自动化Web应用程序的测试过程。

Selenium 架构

Selenium Architecture

  1. Selenium IDE
  • 代表集成开发环境

  • 网络浏览器扩展

  • 这个扩展允许我们记录
    的整个自动化过程 网络应用程序。

  • 但是无法运行自动化测试报告。

  1. 硒远程控制
  • 由客户端库以及打开和终止的服务器组成
    默认浏览器。

  • 在当前版本的 selenium 中,Selenium 远程控制已经过时并且
    被 Selenium Web 驱动程序取代。

  1. Selenium Web 驱动程序
  • 编程语言之间的接口(用于自动化 脚本)和用于执行的网络浏览器。

Selenium Architecture

  • 组成

Selenium 客户端库

用于编写自动化脚本的编程语言命令。

Selenium API

Python 用于自动化的规则和规定集
脚本。

JASON Wire 协议

我们编写的自动化脚本被转换为 JASON,然后
传输到网络浏览器以执行命令。

它使用 TCP-IP/http 协议。

浏览器驱动程序

充当 selenium 脚本和 Web 浏览器之间的连接。

例如 - http://developer.chrome.com/docs/chromedriver

  1. 硒网格
  • Selenium Grid 用于在运行的多个设备上运行并行测试 同时使用不同的浏览器。

Python虚拟环境

我们通过创建隔离环境来保存库的地方。

当我们处理多个项目时,它为每个单独的项目创建一个独立的环境,使我们能够独立管理依赖关系而不会互相影响。

基于实时处理多个项目的示例说明Python虚拟环境的意义

  • 隔离

为每个项目提供隔离的环境,防止
依赖冲突。

  • 可移植性

允许我们在系统之间移动项目。

  • 效率

它只安装特定项目工作所需的依赖项
开启,从而减少资源存储。

  • 再现性

为每个单独的项目提供一致的虚拟环境。

  • 提高安全性

提供沙盒环境,降低损害
的风险 系统范围的Python环境。

  • 灵活性

允许我们为每个
使用不同版本的python和依赖项 项目。

  • 测试和调试

虚拟环境为测试和
提供一致的环境 调试,确保自动化结果一致。

版本声明 本文转载于:https://dev.to/selvakumar/selenium-architecture-3pm2?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Filament:删除记录时删除附件
    Filament:删除记录时删除附件
    Filament 允许您向记录添加附件,但在删除记录时不会删除附件。 为了解决这个问题,我们有两种选择: 监听模型删除事件 当模型即将被删除时,它会触发删除事件。我们可以监听此事件来触发负责在模型不再存在之前删除任何附件的功能。 在模型类中,我们可以添加 booted 方法来向模型注...
    编程 发布于2024-11-08
  • 如何在信用记录检索中实现左连接?
    如何在信用记录检索中实现左连接?
    How to Perform Left Joins in Doctrine在函数 getHistory() 中,您尝试检索用户的信用历史记录。但是,连接子句中的初始语法导致了错误。要在 Doctrine 中执行左连接,可以使用以下语法:$qb ->select('a', 'u') ...
    编程 发布于2024-11-08
  • 以下是几种可能的标题:

1. How to Make CSS Transitions Work with `ngIf` in Angular 2? 
2. Why Does `ngIf` Break My CSS Transitions in Angular 2?
3. Angular 2: Combining `ngIf` and CSS Animations for Smooth Trans
    以下是几种可能的标题: 1. How to Make CSS Transitions Work with `ngIf` in Angular 2? 2. Why Does `ngIf` Break My CSS Transitions in Angular 2? 3. Angular 2: Combining `ngIf` and CSS Animations for Smooth Trans
    Angular 2 的 ngIf 和 CSS 过渡/动画如何在 Angular 2 中使用 CSS 将 div 从右侧滑入?<div class="note" [ngClass]="{'transition':show}" *ngIf="sho...
    编程 发布于2024-11-08
  • 如何使您的 React 应用程序更快:性能提示和最佳实践
    如何使您的 React 应用程序更快:性能提示和最佳实践
    啊,反应!我们喜爱的用于构建 UI 的库。它就像一剂神奇的药剂,让我们的网络应用程序感觉具有交互性和快速性——直到有一天,它却没有了。突然,你注意到事情变慢了。点击按钮就像用信鸽寄信一样。您的应用程序从闪电般的速度变成了慢吞吞的速度,用户开始给您“看”。 但是别担心!就像咖啡可以解决大部分生活问题一...
    编程 发布于2024-11-08
  • 带有 go 工作区的 Golang 微服务模块化架构
    带有 go 工作区的 Golang 微服务模块化架构
    可扩展的代码库基础设施 Golang 在后端开发、并发操作方面表现出色,是构建可扩展和高性能后端应用程序的完美套件。由于缺乏围绕 Go 工作区的微服务架构的帖子,这是通过不同服务共享模块化代码的令人难以置信的工具,我决定分享我的实现。 项目设置 mkdir dock...
    编程 发布于2024-11-08
  • 如何在 C++0x 中使用初始化列表初始化成员数组?
    如何在 C++0x 中使用初始化列表初始化成员数组?
    使用初始值设定项列表初始化成员数组在 C 0x 中,尝试使用初始值设定项列表初始化成员数组时,可能会遇到错误“赋值中的类型不兼容” .要解决此问题,请考虑使用可变参数模板构造函数:struct foo { int x[2]; template <typename... T>...
    编程 发布于2024-11-08
  • 如何在 AWS Lambda 函数中导入 Pandas(库) - AWS Lambda Layers
    如何在 AWS Lambda 函数中导入 Pandas(库) - AWS Lambda Layers
    假设您需要在 AWS Lambda 函数上运行 Python 脚本,然后收到此错误? { "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "R...
    编程 发布于2024-11-08
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于2024-11-08
  • 将日期与 MySQL 的 DATE_FORMAT 进行比较时,为什么使用相同的格式至关重要?
    将日期与 MySQL 的 DATE_FORMAT 进行比较时,为什么使用相同的格式至关重要?
    与 MySQL DATE_FORMAT 进行日期比较使用 MySQL 的 DATE_FORMAT 函数比较日期时,了解您选择的格式会影响比较结果至关重要.在给定的示例中,表包含格式为“%d-%m-%Y”的日期,并且查询尝试使用相同的格式来比较它们。但是,这会导致不正确的结果,因为“28-10-201...
    编程 发布于2024-11-08
  • 如何在Android中实现带有按钮的自定义操作栏?
    如何在Android中实现带有按钮的自定义操作栏?
    在 Android 中实现带有自定义按钮的自定义操作栏创建自定义 ActionBar 可以实现应用程序用户界面的个性化,提供视觉一致性和增强的用户体验。本指南将讨论三个关键方面:1。创建自定义操作栏视图要在 ActionBar 中合并自定义视图,请按照下列步骤操作:扩充自定义布局: 创建自定义操作栏...
    编程 发布于2024-11-08
  • 相同的 Python 字符串何时以及为何共享或具有单独的内存分配?
    相同的 Python 字符串何时以及为何共享或具有单独的内存分配?
    Python 的字符串内存分配之谜Python 字符串表现出一种奇怪的行为,即相同的字符串可以共享内存或单独存储。了解这种行为对于优化 Python 程序中的内存消耗至关重要。字符串初始化和比较最初,具有相同字符的两个字符串(例如 a == b)通常共享内存,如下所示由它们相同的 id 值证明。然而...
    编程 发布于2024-11-08
  • 了解 PHP OOP 中的访问修饰符:公共、受保护和私有
    了解 PHP OOP 中的访问修饰符:公共、受保护和私有
    在 PHP 面向对象编程 (OOP) 中,访问修饰符控制类属性和方法的可见性。 PHP 中的主要访问修饰符是 public、protected 和 private。 本文将引导您了解这些访问修饰符的目的和用法,并解释如何在 PHP OOP 中有效地应用它们。 1.公共访问修饰符 关键...
    编程 发布于2024-11-08
  • 如何在Python中建立跨模块变量可访问性:共享变量而不共享实例?
    如何在Python中建立跨模块变量可访问性:共享变量而不共享实例?
    建立跨模块变量可访问性在Python中,一个方便的跨模块变量是__debug__。然而,创建具有类似功能的自定义变量可能看起来具有挑战性。本文深入研究这个主题,探索一种跨模块定义共享变量同时保持其不变性的方法。解决方案:利用全局模块级变量建立如果跨模块变量不共享公共变量实例,请考虑使用全局模块级变量...
    编程 发布于2024-11-08
  • 确保数据完整性:比较苏打水和质量保证的远大期望
    确保数据完整性:比较苏打水和质量保证的远大期望
    随着组织越来越依赖数据驱动的决策,数据质量变得至关重要。确保数据完整性不仅涉及数据可用性,还涉及数据的准确性、一致性和可靠性。为了实现这一目标,人们开发了各种工具,其中 Soda 和 Great Expectations 脱颖而出,成为流行的数据质量保证解决方案。本文将比较这两种工具,重点介绍它们的...
    编程 发布于2024-11-08
  • 如何在自定义 PHP 函数中创建可选参数?
    如何在自定义 PHP 函数中创建可选参数?
    解读 PHP 中的可选参数PHP 手册使用括号来表示函数语法中的可选参数。例如,在 date() 函数中,$timestamp 参数是可选的,默认为 time()。但是在定义自定义函数时我们如何创建这样的可选参数?解开力学模拟手册中的语法,我们在参数定义中使用等号(=):function dosom...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3