【公司UI自动化学习】

news2024/11/16 0:03:18

 公司课程链接:https://l.jd.com/student/project/project.du?project_id=697509403

公司的课程,是给一个学习方向。

一、 PC自动化

1)什么项目适合

2)PC自动化介入时间点

3)自动化率:

频繁改动的,适合比较稳定的主流程去做自动化,随着逐步稳定,逐渐提升自动化率(自动化场景占比率)

二、自动化框架

 做自动化框架的话,只用selenium是不够的还得搭配其他框架进行结合

cypress:新出的,轻量级,上手快,只支持javascript 

2、selenium原理

selenium有2个版本:

1、selenium1:

通过代理服务器,欺骗远程的WebServer,通过脚本发出的请求,让WebServer以为是浏览器自己发出的请求,然后返回正常的数据。

框架是比较沉重的。因为他需要一个代理服务器。

原理概述:1、最下面的脚本(代码)与remote control server 这样的一个代理服务器进行交互(连接)。2、然后,通过laucher启动一个浏览器,并注入JS代码。3、将代码传给客户端的selenium core里面。selinium core起到一个翻译的作用:解析并执行用户录制的一些操作并执行脚本里定义好的一些指令。5、然后与代理服务器进行一个通讯。6、代理服务器会把命令和请求发送给webserver。然后webserver会做出相应的操作,比如说点击打开URL等

2、selenium2

remote server 其实就是浏览器,每一个浏览器都是 remote server

client端,其实就是代码后端

原理:

Selenium 2,也称为Selenium WebDriver,是一种用于自动化web应用程序测试的工具。它的原理基于直接与浏览器的原生接口进行交互,从而控制浏览器的行为。以下是Selenium 2的工作原理的详细说明:

1. **WebDriver协议**:Selenium 2使用WebDriver协议与浏览器进行通信。这个协议定义了客户端(测试脚本)与服务器(浏览器驱动)之间的消息格式。

2. **浏览器驱动**:对于每一种支持的浏览器,Selenium 2都有一个对应的驱动程序(如ChromeDriver、GeckoDriver等)。这些驱动程序实际上是实现了WebDriver协议的服务器端,它们能够启动浏览器,并与浏览器建立通信。

3. **原生浏览器接口**:与Selenium 1(Selenium RC)不同,Selenium 2不依赖于JavaScript来控制浏览器。相反,它直接调用浏览器提供的原生接口。这意味着Selenium 2的命令能够更快速、更可靠地被浏览器执行。

4. **自动化操作**:通过WebDriver,测试脚本可以模拟用户的操作,如点击链接、输入文本、选择下拉菜单等。这些操作通过HTTP请求发送到浏览器驱动,然后由浏览器驱动转换为浏览器可以理解的动作。

5. **响应反馈**:浏览器驱动执行操作后,会将结果(如元素定位、属性获取等)返回给测试脚本。这样,测试脚本可以根据这些结果进行下一步的操作,或者验证预期的测试结果。

6. **跨平台支持**:Selenium 2支持多种操作系统和浏览器,因为WebDriver针对不同的浏览器实现了统一的接口。这意味着,编写一次测试脚本,可以在不同的浏览器和操作系统上运行。

7. **分布式测试**:Selenium 2还支持分布式测试,允许将测试用例分发到不同的机器上执行,从而提高测试的效率和覆盖范围。

通过这种方式,Selenium 2提供了一种更为直接和强大的方式来控制浏览器行为,使得自动化测试更加灵活和可靠。
简化版本:

简化来说,Selenium 2(WebDriver)的工作流程如下:

启动浏览器:测试脚本通过浏览器驱动程序启动指定的浏览器。

发送命令:测试脚本使用WebDriver的API发送命令给浏览器驱动,这些命令可以是打开网页、点击元素、输入文本等操作。

执行操作:浏览器驱动接收命令后,调用浏览器自身的接口执行这些操作。

返回结果:浏览器驱动将操作的结果(如元素的状态、页面的URL等)返回给测试脚本。

循环交互:测试脚本根据返回的结果进行判断和下一步操作,如此循环,直到完成所有测试步骤。

这个过程相当于是一个“请求-响应”模型,测试脚本与浏览器驱动之间通过这种模型进行持续的交互。

 

webdriver的原理

特点:selenium框架+Testng框架+Yaml文件(页面元素保存)

 

三、PO模式的应用(P、O模式)

 把每个页面的元素、和业务逻辑,分离开。

分层

数据封装--yaml文件

里面就是获取元素的方式(type)和值(value)的存储

如何定位页面元素

使用chrome的Xpath Finder插件

 

页面对象层

 事件操作层

 业务逻辑层

截屏功能

用例执行失败的时候,对页面截屏,这样可以知道是在什么场景失败的

 

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

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

相关文章

【Harmony3.1/4.0】笔记二

概述 列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、…

深度学习500问——Chapter08:目标检测(2)

文章目录 8.2.4 R-FCN 8.2.5 FPN 8.2.6 Mask R-CNN 8.2.4 R-FCN R-FCN 有哪些创新点 R-FCN仍然属于two-stage目标检测算法:RPN R-FCN Fully convolutional位置敏感得分图(position-sentive score maps) our region-based detector is ful…

java-Spring-入门学习-第二天(单例模式和多例模式)

目录 Bean作用域 单例模式(默认可以不写) Spring下的 AutoWired 依赖注入 JaveEE下的 Resource 依赖注入 多例模式 Bean作用域 ​在Spring框架中,Bean是按照作用域来创建的,常见的作用域有两种:Singleton 和 Prototype。Singleton (单例…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好,我是晓星航。今天为大家带来的是…

【Java】HashMap、HashTable和ConcurrentHashMap的区别

文章目录 区别一、HashMap1.1基本定义与特性1.2工作原理与实现1.3常用方法1.4性能与优化 二、HashTable三、ConcurrentHashMap3.1基本特点3.2实现原理3.3常用方法3.4适用场景3.5性能优化 HashTable、HashMap和ConcurrentHashMap之间的区别主要体现在线程安全、继承关系与实现接…

(2024|ICLR,变分扩散模型(VDM),可学习编码器,时间相关的均值函数)DiffEnc:使用学到的编码器进行变分扩散

DiffEnc: Variational Diffusion with a Learned Encoder 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 变分扩散模型的基础 3. DiffEnc 4. 编码器和生成模型的参数化 …

Linux--地址空间

目录 看一个现象 基本概念 细节问题--理解它 1.如何理解地址空间? 2.为什么要有地址空间? 3. 进一步了解页表和写时拷贝 4.如何理解虚拟地址? 看一个现象 先通过一段代码,看一看现象 int g_val 100;int main() {printf(&quo…

Linux 认识与学习Bash——2

1 read 从键盘读取变量的值 read 后面不带变量,那么默认会给REPLY变量赋值 #!/bin/bash echo -n "请输入你的名字:" read name echo "欢迎您 $name" echo "----------------"echo -n "请输入你的名字2:&q…

我与深拷贝

前言 最近在掘金读到了一篇文章《Radash 能取代 Lodash???真幽默 - 掘金》,文章的评论区讨论起了深拷贝。"深拷贝" 我的"老朋友",还记得在学习我人生中的第二道面试题的时候认识了它,…

CSS 画一个三角形

一、前言 在前端开发的时候,我们有时候会需要用到一个三角形的形状,比如地址选择或者播放器里面播放按钮 通常情况下,我们会使用图片或者svg去完成三角形效果图,但如果单纯使用css如何完成一个三角形呢? 实现过程似…

物理学视角讲解diffusion生成模型——隐扩散模型

https://zhuanlan.zhihu.com/p/692996885 https://zhuanlan.zhihu.com/p/693255617 前面两篇文章介绍了扩散过程,同时实现了1维、2维混合高斯扩散、逆扩散,通过模型预测得分函数来实现逆扩散推理。这个章节介绍工业界使用的文本生成图扩撒模型&#xff1…

基于SSM+Jsp+Mysql的多人命题系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

frp改造Windows笔记本实现家庭版免费内网穿透

文章目录 前言frp原理Windows服务端IP检验IP固定软件下载端口放行端口映射开机启动 NAS客户端端口查询软件下载端口检验穿透测试自启设置 Ubuntu客户端软件下载后台启动 后记 前言 之前一直用花生壳远程控制一个服务器,但最近内网的网络策略似乎发生了变化&#xf…

InfiniGate自研网关实现思路二

5.HTTP请求参数解析 解析 HTTP 网络请求的参数信息,包括;GET/POST,以及应对不同 Content-Type 类型的处理。 HTTP 接口请求的参数需要解析成可以匹配到 RPC 接口的入参信息,所以通常为了方便控制一般只支持 RPC 接口单个对象入参…

「sentinel」流量控制组件的应用

「sentinel」流量控制组件的应用 Sentinel版本QPS 一、初识Sentinel1、Sentinel2、Sentinel 和 Hystrix对比3、雪崩问题 二、环境搭建1、下载安装Sentinel2、微服务整合Sentinel 三、流量控制1、簇点链路2、流控设置3、流控模式直接关联链路 4、流控效果流控效果解释 四、热点限…

C#通用类库封装实战

数据库查询 特性方式获取数据库列的别名 数据库更新 使用简单工厂配置的方式

C++ stl容器stack,queue,priority_queue的底层模拟实现

目录 前言: 文档借鉴:Reference - C Reference 1.deque a.deque的结构特点: b.deque的迭代器结构: c.面试题: 2.stack 3.queue 4.仿函数 5.priority_queue 总结: 前言: 本篇一共简单…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理: 当用户移动鼠标的时候 ,创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去,事件管理器 从队列中 取出事件,然后 调用其对应的事件处理函数。 多态机制: &#x…

靠谱的婚恋平台有哪些?青藤之恋、二狗、百合网、珍爱网等深度测评

哇塞,恋爱和结婚对于年轻人来讲可是超级重要的大事呢!不过呀,找到一个稳稳当当的婚恋平台可不简单哟!那么,到底哪个婚恋平台最靠得住呢? 丛丛: 这可是我用了好久好久的脱单交友小程序嘞&#xf…

MySQL中explain的用法

执行结果各字段的含义 EXPLAIN SQL语句 如: EXPLAIN SELECT * FROM test 执行结果: 列名描述id在一个大的查询语句中每个SELECT关键字都对应一个 唯一的idselect_typeSELECT关键字对应的那个查询的类型table表名partitions匹配的分区信息type针对单表…