【公司UI自动化学习】

 公司课程链接: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.mzph.cn/news/825590.shtml

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

相关文章

不需要GPU就可以玩转模型,同时支持本地化部署

简单一款不需要GPU就可以在Win 机器跑的模型:Ollama;用于本地运行和部署大型语言模型(LLMs)的开源工具 关于Ollama的简要介绍 平台兼容性:Ollama支持多种操作系统,包括macOS、Linux和Windows,…

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住,不跳转到单位的上网认证界面。 打开手机的设置应用,点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面, 正常弹出上网认证界面&a…

C++类和对象 中(六大默认成员函数)

前言 紧接着上一篇文章,接下来我们来认识下类的六大默认成员函数,如下图。之所以叫他默认成员函数,是因为即使我们不写,编译器会默认帮我们写,但只要我们自己显示的写了,编译器就不会帮我们生成对应的成员函…

H3C交换机FTP与TFTP

一、设备作为服务器端 服务器端配置:首先保证服务器和客户端网络联通,开启 FTP 服务,配置访问 FTP 服务器的账号密码权限。 system-view # 登录系统界面 intg1/0/1 …

windows平台编译OpenCV以支持CUDA

一、环境要求 VS 2022社区版点击这里CMake(个人是GUI版本)点击这里OpenCV源码点击这里Opencv-contrib源码点击这里CUDA CUDNN参考这篇文章 个人的工具使用版本工具版本说明vs2019 社区版

第十五届蓝桥杯复盘python大学A组——试题C 数字诗意

思路 数字可以分为 有诗意的数字可以写成 (ij)(j-i1)/2 ( i、j都是正整数 ) ij 、j-i1 的奇偶性不同(因为i、j都是正整数) 因此, 如果一个数是奇数就一定有诗意 eg.312 ,523,734,945… 原因:根据上述分…

114 接口中幂等性的保证

前言 同样是 面试问题 如何确保接口的 幂等性 幂等是一个 较为抽象的概念, 多次重复访问, 不会导致业务逻辑的异常 这里从增删改查, 几个方面列一下 一般来说, 我们核心需要关注的就是 新增 和 更新 对于 增加元素, 首先针对唯一约束进行校验, 然后再处理新增的相关业…

Day09 React———— 第九天

ReactRoter 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候,path 对应的组件会在页面中进行渲染 基础用法 import { createBrowserRouter, RouterProvider } from "react-router-dom"; const router createBrowserRoute…

基于windowns下的TCP网络通信编程

Tcp通信的三次握手和四次挥手 TCP的三次握手和四次挥手是TCP连接的建立和断开过程,确保了可靠的数据传输和连接状态的正确管理。 TCP的三次握手(TCP 链接建立): 1. 客户端发送 SYN : 客户端向服务器发送一个 SYN 报文…

AI讲师人工智能讲师大模型培训讲师叶梓:突破大型语言模型推理效率的创新方法

大型语言模型(LLM)在自然语言处理(NLP)任务中展现出了前所未有的能力,但它们对计算资源的巨大需求限制了其在资源受限环境中的应用。SparQ Attention算法提出了一种创新的方法,通过减少注意力机制中的内存带…

TCP为什么需要3次握手?

一、3次握手过程 客户端向服务端发送一个表示建立连接的SYN报文段,服务端从IP数据报中提取出TCP SYN报文段,为该TCP连接分配需要的缓存和变量,并向客户端发送表示允许连接的报文段ACK。客户端在收到ACK报文段之后,也要给该连接分配…

探索Java世界中的七大排序算法(上)

文章目录 排序的概念直接插入排序希尔排序( 缩小增量排序)选择排序堆排序冒泡排序 在计算机科学中,排序算法是一类重要的算法,它们用于将一组元素按照一定的顺序进行排列。在Java编程中,我们经常需要对数组或集合进行排序操作。本文将介绍Jav…

【docker 】docker-compose 部署mongoDB

在notepad中将格式改为UNIX (编辑》文档格式转化》转为Unix),编码改为UTF-8 ( 编码》转为UTF-8),改好后如图 新建启动脚本 mongo.sh #!/bin/bash # 挂载路径 DATA_DIR/opt/docker-data/mongodb/data LOG_…

timesten 安装

1. 安装 从oracle的网站(http://www.oracle.com/technology/global/cn/software/products/timesten/index.html)下载,timesten的安装文件。 将下载文件解压后,出现linux86文件夹,执行setup.sh,步骤如下…

死磕GMSSL通信-java/Netty系列(三)

死磕GMSSL通信-java/Netty系列(三) 接着上次的博客继续完善,上次其实只是客户端的改造,这次把服务端的也补上,netty集成GMSSL实现GMServer 1、netty_tcnative c代码改造,这个是客户端和服务端都需要都该的…

数据挖掘与机器学习

一. 机器学习的种类 1. 有监督的机器学习 : 分类 : KNN 最近邻 逻辑回归 - 朴素贝叶斯估计 SVM 线性 或 非线性 优化模型 决策树模型 - 随机森林 - 其它集成模型 lightGBM - XGBOOST 回归: 线性 …

驱动云创建保存自己的环境

驱动云创建保存自己的环境 制作镜像方法一方法二报错 上一篇link介绍了如何在驱动云上部署llama2以及驱动云在训练大模型的方便之处。也说到了可以直接使用驱动云现有的环境,免得自己配置环境。 但是有的时候免不了自己想要安装一些包。 驱动云的环境是这样的&…

基于SpringBoot + Vue 的电影售票及影院管理系统(前后端分离)

后端:Spring Boot Mybatis 实现功能: 售票子系统:用户浏览电影信息,电影分类查看,搜索查看,购票操作(未实现支付沙箱),超时取消订单等 管理子系统:管理员…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音,然后通过扬声器将声音播放出来。当我们打开电视并选择频道时,电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后,就能够通过扬声器发出声音。电视机声音的产生原理和音…

react中子父组件互相传值

在react中父子组件互相传值,除了使用类似于redux这样状态管理的工具,怎么实现?? 父传子(简单)父:子: 子传父(较麻烦)父:子: 父传子(简单) 父: 子: 子传父(较麻烦) 父: 子: