面试中有关UI自动化的那些事 ~

article/2025/11/9 5:36:54

面试官过程中UI自动化必问的几个问题总结:

一、有做过UI自动化吗?怎么做的?这个问题在面试中问UI自动化相关技能的时候常常被问到,那该如何去回答呢?

接下来我就UI自动化相关的一些面试的问题做一个解答:

1、你做过UI自动化吗?用什么做的? 

    可以回答说做过,用的是python+selenium+unittest单元测试框架来做的,如果又问这个框架是你自己搭建的吗?还是公司原来就有的你只是使用?可以说自己参与过搭建(搭建过程其实不难,难在这个框架的设计,一个项目涉及到很多模块,这些模块又是不同的人在负责,而且涉及到很多业务上依赖性的东西以及一些最终产出的关注点的不一样,框架搭建好后是整个自动化团队一起使用,所以大家也都是聚在一起商量这个框架改如何设计是否满足每个模块的最终产出要求)

这个框架改如何搭建呢?在这里我讲一下UI自动化的一个基本的操作流程和几大最基本的分层;(当然每家公司的业务不一样,也可以多一些分层以满足自家的业务需求,但最基本的核心分层以及作用还是一样的)

首先我来讲一下做UI自动化的一个操作流程:
    首先的话就是我需要打开pycharm然后新建一个py模块,然后导入selenium模块,time模块等等,然后通过from selenium import webdriver语句导入webdriver模块,然后创建一个driver对象:driver=webdriver.Chrome(),再通过driver.get方法来打开我们测试环境的地址,再使用 driver.maximize_window()最大化浏览器窗口,然后会使用driver.implicitly_wait()设置一个隐式等待,我可以通过driver.find_element_by_id,或者xpath,name,class,css等元素定位方法来进行定位到用户名和密码输入框,并且通过调用send_keys进行输入用户名和密码,最后通过调用click方法进行登录,登录之后,有一些表单的填写页面(比如主要有姓名、证件信息、手机号码、常住地址、邮箱、紧急联系人等等,如果是输入框我依旧用send_keys,如果有一些下拉框我会导入Select类,通过select_by_value方法进行定位,如果有滑动的地方我也会用window.scrollTo()方法,设置变量为js,然后通过driver.execute_script()来调用js变量来达到滑动滚动条的目的,包括如果是有iframe弹框的话,我首先会通过switch_to.frame()进入到iframe弹框,然后再进行其他的操作,如果要退出iframe框的话,直接用switch_to.default_content()方法就可以了,最后写完整个一个流程之后,我还会通过调用text方法拿到某个元素的文本值赋值给到一个变量,然后通过assert方法把预期结果和实际结果进行一个断言,以上就是我做ui自动化的一个大致流程,但是这是我们最开始做ui自动化的方法,后面因为做的时间也比较久,用例也比较多,所以后续用了一些PO设计模式和分层对用例进行了一些封装

面试官如果问:那你们后面是怎么封装的呢?

我们大概分了6层,来对我们的UI自动化进行了封装,要和您讲一下具体的代码吗?
1)如果面试官回答讲一下吧,那就需要讲详细一点
2)如果面试官说不用,大概讲一下分层架构就可以了,那就讲讲简单一点

当然,如果你代码能力不怎么样,就别给自己挖坑,万一真的要你讲代码,现场气氛一下子就会变的很尴尬,你可以主动说之前这个框架参与过搭建,要不要给介绍一下,接着你把框架分层简单的介绍一下就行了,当然你代码能力还可以,你可以详细的讲讲也行
代码方面大家可以参考这篇:UI自动化框架设计(含代码)

接下来我来讲一下这个框架是怎么分层的

这个框架我设计了六层,大家可以做个参考

第一层:的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些连接数据库的IP地址,用户名密码等等
第二层:是utils工具类层,这个里面主要封装了一些读取Excel表格的工具类,还有发邮件的工具类,还有一些读取配置文件的工具类
第三层:是一个public基类,这个里面主要封装了元素定位的方法比如把id,name,class,xpath,css等等都封装在一个类方法里面了,还把一些send_keys和隐式等待和其他其他公共方法都进行了二次的封装
第四层:就是testcase用例层了,这个里面主要就是通过定义一个类然后继承unittest.TestCase这个类,通过unittest单元测试框架来管理用例,在setupclass里面去创建driver对象,然后通过设置和取值的方法,拿到driver对象,先编写登录的用例,然后这个里面也用到了PO设计模式,把我们的元素定位和流程层,代码层进行了分离,最后用例写完再通过self.assertEquals进行一个断言
第五层:就是run运行层,首先会通过把所有的用例加载到一个suite套件里面,然后再通过调用run方法运行这个套件
第六层:就是通过HTMLtestrunner模块生成测试报告,然后最后通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的ui自动化用例,大致的一个框架结构就是这样的

下面截图是这个框架的大致样子

接下来我讲讲UI自动化面试中其它的一些问题: 

二、自动化中遇到了什么问题?如何解决?
1、有的时候动态元素定位不到 —> 我会采用xpath相对路径自己写xpath语法来进行定位
2、有的时候自动化脚本执行速度较慢 —> 我会尽量少用xpath绝对路径,因为xpath绝对路径执行速度很慢,并且我会少用sleep方法,涉及到一些if elif条件判断时,尽量把可能发生的条件放在前面写,这样可以减少程序判断的次数,提高效率
3、弹框内有按钮点击不到 —> 弹框里面有设置滚动条,首先进入弹框里面,将滚动条滑动到最底部才可以点击确定或者取消按钮
4、有的时候元素没有加载出来 —> 我会通过设置隐性等待和显性等待来解决
5、有的时候还会碰到iframe框 —> 我会通过driver.switch_to.frame先进入到iframe框里面,再去定位到里面的元素
6、有的时候还会有alert弹框 —> 我会先点击确认弹框活取消弹框之后再定位其他的元素

三、UI自动化中的PO设计模式是什么意思?
    PO设计模式英文全称就是Page Object,中文的意思就是页面对象设计模式,指的是所有当前页面的控件和元素都为类或者对象的属性,我们平时用PO设计模式,主要分了三层,最底层是元素定位层,就是把元素定位方法id,xpath,name,css等等和元素通过元组来接受,并且放在一个类当中,第二层是流程层只写我们的流程,第三层就是我们的用例也就是我们的代码层了,代码层会调用流程层,并且在需要元素定位的时候都是把底层已经封装好的元组也传进来就可以了,相当于就是不会把代码写死,起到了一个分离和解耦的作用,这个就是我理解的PO设计模式。
PO设计模式优势如下:
1. 让元素定位,流程,案例进行了分离
2. 前端代码关于元素定位有改动可以随时进行处理,修改非常方便
3. 让代码间的耦合性降低
4. 降低代码的维护成本,代码的复用性高 

先写到这里,其它的问题我后续想到了我再继续补充。。。


http://chatgpt.dhexx.cn/article/lyZHkp4O.shtml

相关文章

UI面试官的哪些问题让你感觉很高明?

大家在面试UI设计师的时候,遇到让你感觉面试官的问题很高明呢? 专业知识储备、设计思维和技能 1.用户体验设计知识点。给应聘者提问几个专业问题(包括用户研究方法、可用性知识、用户思维、情感化设计、web设计常识、移动设计规范、移动互联…

UI设计公司面试时会提哪些问题?

相信很多参加完UI设计培训的同学们,最担心的一个问题就是关于UI设计的面试,技术学到位之后就是要开始求职面试了,那么UI设计公司面试时会提哪些问题呢?来看看下面的详细介绍,希望能够帮助到大家。 UI设计培训干货:UI设…

2021年UI设计面试问题及答案解析

UI设计这个岗位的薪资是非常高的,想要进入到这个行业的小伙伴越来越多,下面小编给大家整理了今年UI设计面试常见的面试题及答案解析,希望能够帮助你在2021年求职UI设计师面试中脱颖而出,找到一份高薪工作。 2021年UI设计面试问题及…

UI设计师面试技巧

UI设计这个岗位目前在很多互联网公司都存在,职位刚需显而易见,最近关于UI设计岗位的招聘信息越来越多,如何找到自己心仪的公司呢?来看看下面小编为大家介绍的UI培训分享篇-UI设计师面试技巧,希望能够帮助到大家。 UI培训分享UI设…

UI面试常见问题总结

问题01你大学学的什么专业?考核点:是不是设计专业,专业不专业参考答案:如果你是设计专业直接强调你是本专业的就行,如果不是设计专业可以这么回答,我大学是学食品生物专业的,但是毕业之后并没有从事本专业的工作,因为…

UI设计师在面试中问到频率最高的五个问题!

对于面试者而言,面试中的表现决定了这场面试的成败。尤其是在面对面试官的提问时,更应该慎重,很多问题面试官问的看似平常,实际上可以从你的回答中推测出他们想要的答案。针对UI设计初学者们反馈的问题,我总结出了UI设计师在面试中问到频率最高的五个问题,并分享回答的技…

UI面试 问答总结

1、推动一个项目的时间要多久?举个例子? 答案:项目就是设计师的饭碗,对于公司来说也是,项目无法启动让人很烦躁的 回答这类问题的时候,还是要明确工作和提高效率才是设计的根本。 2、现在我们假设一下你…

UI设计师求职中常被问到的13个面试题及答案总结

UI设计是目前公认的新兴高薪职业,吸引了人们的广泛加入。想要求职拿高薪,掌握专业技能之余,我们还要重视面试。有人好奇UI设计师面试常见问题有哪些?接下来就给大家分享一下UI设计师求职中常被问到的13个面试题。 1、UI和UE最大的区别在哪里? UI即User Interface,用户界…

PHP 纯真IP数据库查询IP地址信息

先下载一个纯真IP数据库, 安装完整后,将qqwry.dat即IP数据库放在项目拓展位置,例: 调用: //use net\IpLocation;include IpLocation.php; $ip 219.152.56.66; $ipadress new IpLocation();//引入IP地址查询类 $location $ipadress->getlocation($ip); $location[coun…

私网ip、公网ip

IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理…

数据包中的IP与MAC

PC1:10.10.10.1 网关&#xff1a;10.10.10.2 R1--E0/0/0:10.10.10.2 R1--E0/0/1:20.20.20.2 PC2:20.20.20.1 网关&#xff1a;20.20.20.2 R1配置如下&#xff1a; <Huawei>system-view [Huawei]interface Ethernet0/0/0 [Huawei-Ethernet0/0/0]ip address 10.10.10.2 …

03. 路由 · 网络 · 公网IP · 私网IP · NAT

路由 网络 NAT 路由练习1 - 让4台主机之间可以互相通信练习2 - 让4台主机之间可以互相通信 数据包的传输过程&#xff08;简述&#xff09;第一个包的丢失 网络、互联网 、因特网ISP服务器 网络分类局域网城域网广域网 常见接口上网方式电话线入户光纤入户网线入户家用无线路…

公网IP和私网IP的使用差别和用途

公网IP和私网IP是两个重要的概念&#xff0c;二者之间存在很大的差别和用途。具体来说&#xff0c;公网IP用于连接互联网&#xff0c;私网IP则用于配置局域网中的设备。在本文中&#xff0c;我们将详细讨论公网IP和私网IP之间的区别以及它们在实际应用中的作用和用法。 什么是公…

公网IP与私网IP作用及转换过程

一、网络层的主要功能 1.提供了通讯时必须使用的逻辑ip地址 2.连接不同的网段&#xff0c;包括公网与私网 3.根据不同的路由协议选择最佳路径 二、IP包头的内容 1.版本:IPV4或IPV6 2.首部长度:指IP头部长度&#xff0c;默认为20Byte 3.服务类型与优先级:配置Qos实施服务质…

为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;

文章目录 1.百度查到的ip和ipconfig查到的不同1.1引出问题1.2不一样的原因 2.IP地址分类2.1IP类别2.1 Public IP和Private IP 3.总结3.1整理上网流程3.2遗留问题 1.百度查到的ip和ipconfig查到的不同 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的I…

IP归属地解析之离线纯真数据库分享

文章目录 前言一、什么是IP离线纯真数据库二、GeoIP21.引入库2. 代码实装2.1 数据获取2.2 数据位置2.3 编写测试类2.4 IP解析 三、IP2Location1. 官方SDK文件获取2. 代码实装2.1 获取数据2.2 数据位置2.3 编写测试类2.4 IP解析 四、dbIP五、数据免费下载总结 前言 能说算不上什…

IP数据包

IP数据包 结构&#xff1a;ip数据格式&#xff0c;ICMP协议介绍&#xff0c;ARP协议介绍。 网络层功能&#xff1a;定义了基于IP协议的逻辑地址。 ​ 链接不同媒介类型。 ​ 选择数据通过网络的最佳路径。 ip数据包的格式 版本(Version):该字段包含的是IP 的版本号&#x…

IP数据包详解

引言 IP提供不可靠&#xff0c;无连接的数据报传送服务。 不可靠&#xff1a;意思它不保证IP数据包能成功地到达目的地&#xff0c;IP仅提供尽力而为的传输服务。任何要求的可靠性必须有上层来提供。无连接&#xff1a;意思是IP并不维护任何关于后续数据报的状态信息&#xf…

网络基础:数据链路层_公网i私网ip、路由通信、MTU以及ip分片

在本章节开始前&#xff0c;先提出几个问题&#xff1a; 公网ip和私网ip的区别是什么&#xff0c;哪个能重复哪个不能&#xff1f;如何实现两个设备之间的信息通信&#xff1f;是通过公网ip查找还是私网ip查找&#xff1f;路由表包含的信息有哪些&#xff1f;ARP协议的作用以及…

公网IP与私网IP的区别

公网IP与私网IP 计算机上网原理 互联技术 公网IP与私网IP 最近在自己的虚拟机上装了一个Linux系统&#xff0c;相当于是一个服务器&#xff0c;但是这个“服务器”跟我们常说的云服务器&#xff0c;可以理解为一样也可以理解为不一样&#xff0c;其中一个很关键的点是&#xf…