2024UI自动化面试题汇总【建议收藏】

1.你是如何搭建ui自动化框架的?

  在搭建ui自动化框架,使用的是po设计模式,也就是把每一个页面所需要

  操作的元素和步骤都封装成一个页面类中。然后使用selenium+unittest搭建

  四层框架实现数据、脚本、业务逻辑分离(关键字驱动)。其中四层框架包括

  基础层(BasePage)、业务逻辑层(Pages)、数据层(Data)、测试用例层(Testcase)

  1.基础层(BasePage)

  设计一个基本的Page类,所有页面皆继承该类。提供一个页面需要实现的基本功能及公共方法。

  2.业务逻辑层(Pages)

  按照PO设计模式,将每个页面抽象为一个类,放在Pages包里面,每个页面继承Basepage,可调用Data层数据,包括页面所有的操作对象属性和实现的功能

  3.数据层(Data)

  该层存放相关数据,例如:用户数据和密码。在测试用例可通过调用数层的数据来进行操作。

  4.测试用例层(Testcases)

  每一个测试用例testcase都对应Pages里面的一个页面,继承unnitest.TestCase类

  通过调用对应页面类的方法,数据层的数据、增加断言(assert)来验证功能的正确性。

  此外通过Jenkins自动执行测试、代码质量检测和部署到测试服务器、部署到生产服务器上

2.UI自动化测试中定位方式有哪些,哪些是你常用的?

  By ID

  By Class Name

  By Tag Name

  By Name

  By Link Text

  By Partial Link Textzhi

  By CSS Seletor

  By XPath

3.UI自动化测试有哪些缺点?如何改进?

  不稳定,页面经常变,不好定位,不适合业务复杂和频繁变动的项目

  改进:在项目中尽量使用显示等待

4.请你描述一下在UI自动化运用的等待机制区别?

  sleep()强制等待,设置固定休眠时间,执行sleep()后线程休眠

  而另外两种线程不休眠

  隐式等待,是设置的全局等待

  显示等待,是针对于某个特定的元素设置的等待时间

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

5.PO设计模式的原理?哪些地方能够改善?

  原理:

  PO模式,全称 Page object ,页面对象模型。

  将页面的元素定位和元素行为封装成一个 page 类。

  实现页面对象和测试用例分离。

  改善:

  其中对对象库层、逻辑层、业务层进行了一系列封装

6.Unittest框架有什么缺点?

  1 不够灵活,比如进行 ui 自动化设计时,会多次打开浏览器,增加脚本运行时间

  2 测试报告不够全面,没有 pytest 的 allure 测试报告清晰美观

7.Webdriver的原理

  由于客户端脚本(java, python, ruby)不能直接与浏览器通信,这时候可以把Webdriver 当做一个翻译器,它可以把客户端代码翻译成浏览器可以识别的代码(比如js).客户端(也就是测试脚本)创建 1 个 session,在该 session 中通过 http 请求向Webdriver 发送请求,Webdriver 翻译成浏览器懂得脚本传给浏览器,浏览器把执行的结果返回给 Webdriver,Webdriver 把返回的结果做了一些封装(一般都是 json 格式),然后返回给客户端,根据返回值就能判断对浏览器的操作是不是执行成功。

8.selenium 中 hidden 或者是 display = none 的元素是否可以定位到?

  不能

9.如何提高 selenium 脚本的执行速度?

  1减少操作步骤,减少脚本用例不必要的步骤

  2设置等待时间的时候,可以

  sleep 固定的时间,也可以检测某个元素出现后中断等待也可

  以提高速度

  3实现多线程。在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,

  尽量设置多线程运行,提高执行速度。

 10.如何实现多线程?

  先写一个run的函数

  保证for循环能跑的通

  在run函数上加个装饰器 @threads(n),n是线程数

 11.说一下XPATH定位的原理?

  基于HTML的文档目录结构进行定位元素

 12.selenium中如何判断元素一定存在?

  Presense_of_element_located

  强制等待、隐性等待、显性等待

  1.强制等待--固定等待一段时间,即使设置一定的等待时间,也不能确保一定能够定位到元素,因为你无法知道页面加载的时间,而且这种方法通常比较浪费脚本执行时间,效率低

  2.隐性等待--设置最长的等待时间,在这个时间内,当元素被加载出现在dom树中且页面被完全加载完成之后,才执行下一步操作,保证了脚本的稳定性,但执行效率相对较低,因为往往我们只需要目标元素出现即可,并不需要挣个页面加载完成,而隐性等待要等待挣个页面加载完才能执行下一步,浪费一定时间,那么为了解决这种弊端又引入了显示等待。

  3.显示等待--显示等待实现方式通过判断某一个条件是否成立,如果成立就立即执行下一步操作,不需要等待页面加载完成,执行效率高,脚本的稳定性也相对较高

selenium原理

  我们使用Selenium实现自动化测试,主要需要3个东西

  1.测试脚本,可以是python,java编写的脚本程序(也可以叫做client端)

  2.浏览器驱动,这个驱动是根据不同的浏览器开发的,不同的浏览器使用不同的webdriver驱动程序且需要对应相应的浏览器版本

  3.浏览器,目前selenium支持市面上大多数浏览器,不同的浏览器使用不同的webdriver驱动程序且需要对应的浏览器版本

selenium工作过程

  1.selenium client(python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序chromedriver.exe

  2.通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再对浏览器操作需携带此id

  3.打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConection链接到remote server,

  然后使用execute方法调用request方法通过urlib3向remote server请求

  4.浏览器通过请求的内容执行对应动作

  5.浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

【微服务】配置Nacos管理SpringBoot配置文件(附解压包)

📝个人主页:哈__ 期待您的关注 一、什么是Nacos Nacos可以帮助我们配置和管理微服务,是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。Nacos可以用来实现配置中心和服务注册中心。 …

【3月30日信息差】2G 50/年,4G 618/3年 云服务器全网对比 游戏服务器活动 我的世界 幻兽帕鲁 雾锁王国通用

本文纯原创,侵权必究 【云服务器推荐】价格对比!阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准! 【腾讯文档实时更新】2024年-幻兽帕鲁服务器…

Python数据结构实验 图实验(一)

一、实验目的 1.熟悉图的相关概念,包括有向图、无向图、完全图、子图、路径、简单路径、路径长度、回路等定义; 2.掌握图的各种存储结构,主要包括邻接矩阵和邻接表的相关算法设计; 3.掌握图的…

node.js 入门案例 安装教程

前言 Node.js是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。 可以让JavaScript在服务器端运行。它具有轻量级、高…

网络安全--内网篇

一、环境 一个简单的域环境,3台机器即可,一个server2012,win7,,win10 二、开始初始的认识内网 在我们日常渗透中,我们进入企业去进行渗透的时候都是处于一个域的环境下,简单来说域一类网络服务而在服务器…

HarmonyOS实战开发-如何实现一个自定义抽奖圆形转盘

介绍 本篇Codelab是基于画布组件、显式动画,实现的一个自定义抽奖圆形转盘。包含如下功能: 通过画布组件Canvas,画出抽奖圆形转盘。通过显式动画启动抽奖功能。通过自定义弹窗弹出抽中的奖品。 相关概念 Stack组件:堆叠容器&am…

JavaScript基础语法–详谈

JavaScript的编写方式 这里小编写一个简单代码,展示JavaScript三种编写方式 HTML代码行内(可以理解为内联样式) a.第一种方式 一个123的网址,通过点击实现浏览器显示welcome字样提升(与浏览器进行交互)…

【AI模型-机器学习工具部署】远程服务器配置Jupyter notebook或jupyter lab服务

随着AI人工智能的崛起,机器学习、深度学习、模型训练等技术也慢慢泛化,java开发有idea,web开发有vscode,那么AI开发神器肯定离不开jupyter lab(基础版jupyter notebook) Jupyter notebook部署 1. 安装jupy…

基于Python实现多功能翻译助手(上)

创建一个支持多种语言翻译并且允许通过文件拖拽来输入文本的Python窗口应用程序是一个相对复杂的任务,涉及到多个库和组件。以下是一个简化的指南,展示如何使用Python的Tkinter库创建GUI窗口,结合Googletrans库进行翻译,以及使用P…

第十四章 MySQL

一、MySQL 1.1 MySql 体系结构 MySQL 架构总共四层,在上图中以虚线作为划分。 1. 最上层的服务并不是 MySQL 独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。 2. 第二层的架构包括…

Python连接MySQL

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、整体思路二、连接流程三、表结构及代码实现 一、整体思路 二、连接流程 三、表结构及代码实现 代码块如下: import pymysqlcon pymysql.connect(h…

websocket 局域网 webrtc 一对一 视频通话的实例

基本介绍 使用websocket来 WebRTC 建立连接时的 数据的传递和交换。 WebRTC 建立连接时,通常需要按照以下顺序执行一些步骤: 1.创建本地 PeerConnection 对象:使用 RTCPeerConnection 构造函数创建本地的 PeerConnection 对象,该…

springboot共享单车系统

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于共享单车管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了共享单车管理系统,它彻底改变了过…

【JavaScript算法】DOM树层级显示

题目描述: 上述表达式的输出结果为 [DIV] [P, SPAN, P, SPAN] [SPAN, SPAN]直接上代码 let tree document.querySelector(".a"); function traverseElRoot(elRoot) {const result [];function traverse(element, level) {if (!result[level]) {resul…

跨境电商IP防关联是什么?有什么作用?

做跨境电商的朋友应该都知道IP防关联这个词,那么为何IP需要防关联呢?今天为大家来解答这个问题。 跨境电商IP防关联是指在跨境电商运营中,通过采取一系列技术手段,确保每个跨境电商账号使用独立的IP地址,以避免账号之间因为IP地址…

博鳌观察|对话百度沈抖:丰富的应用场景是中国AI赶超的最大机会

既要仰望星空,更要脚踏实地。在被巨大的技术风口裹挟了一年多后,我们与大模型的“相处方式”越来越清晰了。 3月28日,在博鳌亚洲论坛2024年年会现场,我们与百度集团执行副总裁、百度智能云事业群总裁沈抖进行了一次深度交流。 在…

智慧公厕厂家如何选择?光明源智能科技打造一流智慧公厕项目

在当今城市化进程中,智慧公厕已经成为提升城市品质、改善市民生活的重要一环。然而,要打造一流的智慧公厕项目,选择合适的厂家显得尤为重要。作为行业领军者,光明源智能科技在智慧公厕领域具有丰富的经验和卓越的技术实力。今天&a…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户: 1、sys: 角色:数据库超级管理员账户。 权限:具有最高的权限,可以执行任何操作,包括操作数据字典和控制文件。可以创建和删除数据库对象,授予和回收其他用户…

计算机系统基础 5 物理地址的形成

历史 早期,程序员自己管理主存,通过分解程序并覆盖主存的方式执行程序 取指令和存储操作数所有的地址都是物理地址; 执行速度快,无需进行地址转换; 未采用虚拟存储机制。 1961年有人提出自动执行overlay…

Openfeign

Openfeign 相关扩展 在 2020 以前的 SpringCloud 采用 Ribbon 作为负载均衡,但是 2020 年之后,SpringCloud 吧 Ribbon 移除了,而是使用自己编写的 LoadBalancer 替代. 因此,如果在没有加入 LoadBalancer 依赖的情况下&#xff0c…