UI自动化常见精华面试题整理

selenium的运行原理

在这里插入图片描述

1、基于Web端如何做自动化测试,谈谈你的思路和方向?

Web端的自动化测试,基本就是模拟手工测试人员来做功能测试。用机器的自动执行代替人的操作。web端呈现的产品有两个方向可以做自动化测试:接口层和界面操作层,且接口层自动化的比例要高于界面操作层。主要对产品稳定的功能进行自动化测试,主要用于产品的核心功能冒烟测试、回归测试。从系统最核心的功能开始做,再根据情况慢慢展开。

2、UI自动化测试用例如何设计?

UI自动化测试用例是从手工测试用例中提取出来的,跟手工测试用例相比,自动化测试用例更加注重用例的严谨性,选择用例的时候遵循以下原则:

优先选取覆盖产品核心功能的用例;

从成本考量,不要选择流程过于复杂的用例;

选取的用例可以是重复执行,繁琐的部分,比如字段验证、提示信息验证;

优先实现正向的测试用例,反向用例一般情况复杂、数量多;

3、什么是PO模式?

PO模式,全称为Page Object Model ,简称POM,是页面对象模式。对页面进行抽象或者说建模的过程,是把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法。把页面的一个个的web元素设计为页面对象的属性,把页面上的操作(如点击、输入等)设计为页面对象的行为。在自动化测试当中,主要用来实现对页面操作和测试逻辑的一个分离,这样做的好处是业务和实现分开,使自动化测试脚本具备更高的可维护性。

4、你认为PO模式的封装原则有哪些?

公共方法表示页面提供的一个服务,比如我们可以把登录封装成一个 login 方法,把搜索方法封装成一个设施方法,把注册操作封装成一个 register 的方法;

尽量不要暴露页面的内部,比如一个HTML的页面还有一个页面的上下结构;

在 PO 当中一般不做断言,会做到页面逻辑和测试逻辑的分离;

PO 一般里面的方法返回 self 或者是其他的 Page Object ,也可以是一个元素属性;

整个 PO 不需要封装整个页面的行为,用到什么逻辑就封装什么;

对于统一操作,如果出现不同的结果,可以把用不同的方法来表示,比如说登录成功有跳转,登录失败有报错,如果登录还有一种会授权的状况,那么可以封装成三个单独的方法:login success、login error、login invalid。

5、你怎么提高UI自动化脚本的稳定性?

尽量用相对路径的xpath表达式;

查找元素优先用显示等待;

用例与用例之间尽量避免产生依赖,用例可以独立执行;

用例执行结束后对测试场景进行还原,避免影响其他用例的执行;

脚本执行失败后加入重试机制,提升用例的稳定性;

尽量保证单独的测试环境,避免其他的测试同步进行;

6、UI 自动化测试中,如何做集群?

Selenium Grid,分布式执行用例;

你对Selenium Grid有什么了解?它提供了什么功能?

A: Selenium Grid是一款利用现有计算基础架构大幅加速Web应用程序功能测试的工具。

允许测试者轻松地在多台机器上并行运行多个测试,并且可以在异构环境中运行。

基于优秀的Selenium Web测试工具,Selenium Grid允许测试者并行运行多个Selenium Remote Control实例。

更好的是,它集成显示所有Selenium远程控制,所以不必担心实际的基础设施。

Selenium Grid将运行Selenium测试套件所需的时间,缩短到Selenium实例的单个实例运行时间的一小点。

7、简述你所知道的延时等待方式?

强制等待:也叫线程等待, 通过线程休眠的方式完成的等待,如等待5秒: Thread sleep(5000),一般情况下不太使用强制等待,主要应用的场景在于不同系统交互的地方。

隐式等待:通过implicitly Wait完成的延时等待,注意这种是针对全局设置的等待,如设置超时时间为10秒,使用了implicitlyWait后,如果第一次没有找到元素,会在10秒之内不断循环去找元素,如果超过10秒还没有找到,则抛出异常,硬式等待比较智能,它可以通过全局配置,但是只能用于元素定位。

显式等待:也称为智能等待,针对指定元素定位指定等待时间,在指定时间范围内进行元素查找,找到元素则直接返回,如果在超时还没有找到元素,则抛出异常,显示等待是 selenium 当中比较灵活的一种等待方式,他的实现原理其实是通过 while 循环不停的尝试需要进行的操作。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

虚拟机Windows10系统安装QEMU

文章目录 1. QEMU安装1.1 安装准备1.1.1 安装平台1.1.2 软件下载 1.2 安装QEMU1.2.1 找到下载的QEMU软件,双击开始安装1.2.2 设置语言1.2.3 安装向导,点击 Next1.2.4 点击“I Agree”1.2.5 点击Next1.2.6 设置软件安装位置1.2.7 点击 finish1.2.8 编辑系…

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …

FFmpeg源码:av_reduce函数分析

AVRational结构体和其相关的函数分析: FFmpeg有理数相关的源码:AVRational结构体和其相关的函数分析 FFmpeg源码:av_reduce函数分析 一、av_reduce函数的声明 av_reduce函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0…

【计算机操作系统】同步与互斥的基本概念

同步与互斥的基本概念 进程同步的概念 知识点回顾:进程具有异步性,异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进 并发性带来了异步性,有时需要通过进程同步解决这种异步问题,有的进程之间需要…

JVM的面试考点

JVM内存划分 1.堆,整个内存区域中,内存最大的区域,放的都是new出来的对象,new类名这一部分存放在堆中, 而这个scanner是一个临时变量,这个scanner的地址存放在栈上,scanner里面存放的值是new类名这个对象的首地址 2.栈,分为JVM虚拟机栈(Java代码),和本地方法栈(C),这个栈包含了…

如何提前预防网络威胁

一、引言 随着信息技术的迅猛进步,网络安全议题愈发凸显,成为社会各界不可忽视的重大挑战。近年来,一系列网络安全事件的爆发,如同惊雷般震撼着个人、企业及国家的安全防线,揭示了信息安全保护的紧迫性与复杂性。每一…

2024年第五届“华数杯”全国大学生数学建模竞赛C题-老外游中国(代码+成品论文+讲解)

目录 💕一、问题重述💕 🐸问题 1🐸 🐸问题 2🐸 🐸问题 3🐸 🐸问题 4🐸 🐸问题 5🐸 💕二、解题思路💕 …

图解RocketMQ之如何实现顺序消息

大家好,我是苍何。 顺序消息是业务中常用的功能之一,而 RocketMQ 默认发送的事普通无序的消息,那该如何发送顺序消息呢? 要保证消息的顺序,要从生产端到 broker 消息存储,再到消费消息都要保证链路的顺序…

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法&#xff0c;然后去获取当前bean适配的advisor&#xff0c;如果还不熟悉的可以去看下之前的博客&#xff0c;接下来我们分析Spring AOP是如何创建代理对象的&#xff0c;在此之前…

【目标检测类】YOLOv5网络模型结构基本原理讲解

1. 基本概念 YOLOv5模型结构主要包括以下组成部分&#xff1a;‌ 输入端&#xff1a;‌YOLOv5的输入端采用了多种技术来增强模型的性能&#xff0c;‌包括Mosaic数据增强、‌自适应锚框计算、‌以及自适应图片缩放。‌这些技术有助于提高模型的泛化能力和适应不同尺寸的输入图…

MySQL基础操作全攻略:增删改查实用指南(中)

本节目标&#xff1a; NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列&#xff08;或两个列多个列的结合&#xff09;有唯一标 识&am…

【C++】模拟实现stack

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 ​ 目录 一.了解项目功能 &#x1f4cc;了解stack官方标准 &#x1f4cc;了解模拟实现stack 二.逐步实现项目功能模块及其逻辑详解 &#x1f4cc;实现stack成员变量 &…

【Linux】进程间通信(管道通信、共享内存通信)

一.什么是进程间通信 进程间通信这五个字很好理解&#xff0c;就是进程和进程之间通信。 那么为什么要有进程间通信呢&#xff1f; 1.数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 2.资源共享&#xff1a;多个进程之间共享同样的资源 3.通知事件&#xff1a;一…

遗传算法与深度学习实战——生命模拟与进化论

遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等&#xff0c;试图模…

WPF 依赖属性 IsHitTestVisible

IsHitlTestVisible 仅影响本身的元素&#xff08;含内部包含的子元素&#xff09;&#xff0c;不影响父元素效果&#xff0c;且事件会传递到父元素。 Eg&#xff1a; 如父元素有click事件&#xff0c; 子元素设置了IsHitTestVisiblefalse&#xff0c; 当鼠标单击这个子元素时&…

Android 埋点信息分析——内存篇

源码基于&#xff1a;Android U 0. 前言 在前一篇《Android statsd 埋点简析》一文中简单剖析了Android 埋点采集、传输的框架&#xff0c;本文在其基础对埋点信息进行解析&#xff0c;来看下Android 中埋下的内存信息有哪些。 1. 通过代码剖析google 埋点内容 1.1 PROCESS_M…

BootStrap前端面试常见问题

在前端面试中&#xff0c;关于Bootstrap的问题通常围绕其基本概念、使用方式、特性以及实际应用等方面展开。以下是一些常见的问题及其详细解答&#xff1a; 1. Bootstrap是哪家公司研发的&#xff1f; 回答&#xff1a;Bootstrap是由Twitter的Mark Otto和Jacob Thornton合作…

脊髓损伤小伙伴的活力重启秘籍! 让我们一起动起来,拥抱不一样的精彩生活✨

Hey小伙伴们~&#x1f44b; 今天咱们来聊聊一个超级重要又温暖的话题——脊髓损伤后的锻炼大法来啦&#xff01;&#x1f389; 记住&#xff0c;无论遇到什么挑战&#xff0c;我们都要像打不死的小强一样&#xff0c;活力满满地面对每一天&#xff01;&#x1f4aa; 首先&#…

2024实验班选拔考试(热身赛)

比赛传送门 邀请码&#xff1a;2024wksyb A. 简单的数列问题 签到&#xff0c;记得开long long。 #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define endl …