selenium自动化测试面试题【含答案】

news2024/10/5 13:41:53

目录

1、selenium中如何判断元素是否存在?

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

3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

4、如何提高selenium脚本的执行速度?

5、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

6、你的自动化用例的执行策略是什么?

7、什么是持续集成?

8、自动化测试的时候是不是需要连接数据库做数据校验?

9、id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?

10、如何去定位页面上动态加载的元素?

11、如何去定位属性动态变化的元素?

12、点击链接以后,selenium是否会自动等待该页面加载完毕?

13、webdriver client的原理是什么?

14、webdriver的协议是什么?

15、启动浏览器的时候用到的是哪个webdriver协议?

16、什么是page object设计模式?

17、怎样去选择一个下拉框中的value=xx的option?

18、如何在定位元素后高亮元素(以调试为目的)?

19、什么是断言?

20、如果你进行自动化测试方案的选型,你会选择哪种语言,java,js,python还是ruby?

21、page object设置模式中,是否需要在page里定位的方法中加上断言?

22、page object设计模式中,如何实现页面的跳转?

23、自动化测试用例从哪里来?

24、你觉得自动化测试最大的缺陷是什么?

25、什么是分层测试?

26、webdriver可以用来做接口测试吗?

27、get和post 的区别?

28、公司内一直在使用的测试系统(B/S架构)突然不能访问了,需要你进行排查并恢复,说出你的检查方法有哪些?

在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试。下面这些问题总结,可能会对你有所帮助。


1、selenium中如何判断元素是否存在?

答:isElementPresent 

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

答:不可以定位到 

3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

答:(1)添加元素智能等待时间:driver.implicitly_wait(30)

(2)try 方式进行 id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种

(3)Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的,但是在自动化工程的实施过程中,高质量的自动化测试不是测试人员所能保证的,是需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性。当然如果开发人员开发不规范,我们在定位元素的时候尽量使用相对地址定位,这样能减少元素定位受页面变化的影响。只要我们元素定位准确,就能保证每一个操作符合预期结果 

4、如何提高selenium脚本的执行速度?

答:Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是最关键。

1)我们可以从以下几个方面来提高速度:

一、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过网址来打开,减少不必要的操作。

二、中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们测试,就设置超时时间,中断页面加载。

三、在设置等待时间的时候,可以用sleep固定时间,也可以检测某个元素出现后中断等待也可以提高速度。

四、配置testNG实现多线程。在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高执行速度。

5、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

答:time.sleep( )、driver.implicitly_wait(30),多用 try 捕捉,处理异常,此时我们要分析出不稳定的原因,然后有针对性的去解决问题。

那么主要有以下几个方面 :

一、网速问题:有的时候网页加载的比较慢,在程序执行的时候要操作的元素没有显示出来,这种情况比较常见,运行一次网速好的时候通过了,再运行一次,页面没有打开,就不通过了。为了提高稳定性,我们只能牺牲运行时间了,在经常检测失败的元素前加上等待时间,等要操作的元素出现之后再执行下面的操作。

二、Selelnium的原因:Selenium1.0和2.0还是有区别的,有些函数在2.0下运行确实有时而有效,时而无效。如果是mouseover()函数,就是这种情况, 我们需要避免使用这类的函数。

三、多线程的时候,测试用例间相互影响。虽然使用多线程的时候运行速度比较快,但是如果用例之间的耦合性没有设计好,也会影响的,如果用例A先于用例B执行的时候,就会影响到用例B;反之则没有问题。这种情况,如果你的自动化测试工程打算多线程的时候,提前就要把测试用例测试的耦合度放松,尽管没有任何关系,因为多线程的执行顺序是不受控制的。

6、你的自动化用例的执行策略是什么?

答:自动化测试用例的执行策略是要看自动化测试的目的,通常有如下几种策略:

一、自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时执行的,如果每五分钟或是一个小时执行一次,那可以在jenkins上创建一个定时任务即可。

二、必须回归的用例。有些测试用例,如BVT测试用例,我们在公司产品任何变动上线之前都需要回归执行。那我们就把测试用例设置成触发式执行,在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在仿真环境上部代码的时候,我们的自动化测试用例就会被触发执行。

三、不需要经常执行的测试用例。像全量测试用例,我们没有必要一直回归执行,毕竟还是有时间消耗的,有些非主要业务线也不需要经常回归。这类测试用例我们就采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。

7、什么是持续集成?

答:持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。持续集成,最简单的形式是包括一个监控版本控制(SVN等等)变化的工具。当变化被发觉时,这个工具可以自动的编译并测试你的应用。

8、自动化测试的时候是不是需要连接数据库做数据校验?

答:UI自动化不需要,接口测试会需要

9、id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?

答:css 、xpath 几乎所有的元素都可以定位到

10、如何去定位页面上动态加载的元素?

答:触发动态加载元素的事件,直至动态元素出现,进行定位

11、如何去定位属性动态变化的元素?

答:xpath或者css通过同级、父级、子级进行定位 

12、点击链接以后,selenium是否会自动等待该页面加载完毕?

答:会的等待该页面加载完的

13、webdriver client的原理是什么?

答:Webdriver实现原理:通过研究selenium-webdriver的源码,发现其实webdriver的实现原理并不高深莫测无法揣度。在这里以webdriver ruby binding的firefox-webdriver实现为例,简单介绍一下webdriver的工作原理,当测试脚本启动firefox(火狐)的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器。如果测试脚本指定了firefox的profile,那么就以该profile启动,否则的话就新启1个profile,并启动firefox; firefox一般是以no-remote的方法启动,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox实例便作为webdriver的remote server存在; 客户端(也就是测试脚本)创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response; 客户端接受response,并分析其返回值以决定是转到第3步还是结束脚本;这就是webdriver的工作流程,看起来很复杂实际上当了解了webdriver的实现原理后,理解上述问题应该比较简单。webdriver是按照server – client的经典设计模式设计的。server端就是remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;client端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,跳转到特定的url等操作是以http请求的方式发送给被测试浏览器,也就是remote server,remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

14、webdriver的协议是什么?

答:The WebDriver Wire Protocol 

15、启动浏览器的时候用到的是哪个webdriver协议?

答:http协议

16、什么是page object设计模式?

答:Page Objects是指UI界面上用于与用户进行交互的对象。它可以指整个页面,也可以指Page上的某个区域。Page Objects是你的test code的交互对象,是对实际UI的一种抽象模型化。通过Page Objects可以减少重复代码的编写,例如,很多页面都有同样的header,footer,navigator等部分,如果对这些进行抽象,只写一次就可以在其他地方通用了。

17、怎样去选择一个下拉框中的value=xx的option?

答:需要二次定位 

18、如何在定位元素后高亮元素(以调试为目的)?

答:重置元素属性,给定位的元素加背景、边框 

19、什么是断言?

答:断言的英文是assertion,断言检查的英文是assertion checking。断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。

20、如果你进行自动化测试方案的选型,你会选择哪种语言,java,js,python还是ruby?

答:使用自己熟悉的语言 

21、page object设置模式中,是否需要在page里定位的方法中加上断言?

答:不需要

22、page object设计模式中,如何实现页面的跳转?

答:get、click (可能有坑)

23、自动化测试用例从哪里来?

答:手工用例中抽取出来,可以参考自动化用例的执行策略 

24、你觉得自动化测试最大的缺陷是什么?

答:不稳定、可靠性、不易维护、成本与收益不成正比

25、什么是分层测试?

答:UI测试、集成/接口测试、单元测试这些都可以算做分层测试

26、webdriver可以用来做接口测试吗?

答:有一定难度,不推荐做接口测试

27、get和post 的区别?

答:因为使用GET请求不会产生什么动作。不会产生动作意味着GET的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了。

两种请求方式的区别:

1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。

2、传输数据的大小在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

3、安全性POST的安全性比GET的高 

28、公司内一直在使用的测试系统(B/S架构)突然不能访问了,需要你进行排查并恢复,说出你的检查方法有哪些?

答:

一、网站输入域名直接无法访问,网站之前还正常,突然就无法访问

1)测试FTP是否正常可以登录,不能登录的直接问域名商,是域名商的问题直接联系他们。

2)空间赠送的三级域名是否能够访问网站打开网站(空间都赠送三级域名),如果也不能访问应该是空间问题。

3)在电脑的开始菜单运行中输入cmd,在弹出的黑框中输入:ping 你的域名;然后回车,如果看不到IP或IP地址与你的主机地址不符,则说明域名解析有误,是域名的问题得重新解析域名。

二、访问报404错误(无法找到该页),说明是网站内容都正常是程序出现问题,看看程序是否完整。

三、访问网站出现MySQL Server Error 这个是数据库链接错误,查看数据库连接文件和数据库是不是出现错误。

四、访问网站出现500错误。1. 请登录FTP查看是否多了异常文件或丢失文件,说明网站被侵入了,马上联系网站制作商进行进行排查故障。2. 如果空间且FTP程序目录没有缺失文件或刚刚安装就出现500错误,请确认空间已开启scandir()函数,查看是不是禁止了这个函数。

在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试。下面这些问题总结,可能会对你有所帮助。

1. 什么是Selenium?
Selenium是一个开源的web自动化测试框架,主要是基于web uI的自动化测试。现在的版本,逐步增加了对移动端的自动化测试。Selenium支持多种语言进行开发自动化测试脚本,有Java,python,C#,Javascript等等。Selenium支持跨浏览器平台测试。

2.Selenium是否支持桌面应用软件的自动化测试。
Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的。

3.Selenium是否支持用例的执行的引擎。
引擎好比就是一个发动机。Selenium是没有关于测试用例和测试套件管理和执行的模块。我们需要借助第三方单元测试框架来实现用例管理和用例的执行。例如Java中有Junit或者testNG,Python中有unittest单元测试框架。

4.Seleinum是否有读取excel文件的库
没有,这里需要用到第三方工具。例如Apache POI插件。

5.Selenium有哪些组件?
最早的有Selenium IDE,IDE只支持安装在fiefox上一个插件,支持录制自动化脚本。还有
remote RC,和Grid 和webdriver。我们一般最重要的就是使用webdriver。

6.Selenium有什么限制或者缺陷
       除了基于web的软件和mobile的程序,selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能
依赖第三方插件,例如Junit/TestNG和unittest。由于它是免费的软件,所以没有供应商去提供支持和服务,有问题,只能求助selenium社区。还有一个就是,selenium入门门槛可能有点高,需要具备一定编程语言基础的才能玩转。

7.在selenium中,有哪些不同定位元素方法
ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector

8.什么是imlicitlyWait
imlicitlyWait是隐式等待,一般在查找元素的时候使用。例如,我设置一个查找元素最大时间为10秒,使用了
imlicitlyWait后,如果第一次没有找到元素,会在10秒之内不断循环去找元素,知道超过10秒,报超时错误。

9.什么是expliciteWait
这个是显式等待,就是不管如何都是要等10秒,如果你设置了10秒超时,这个是selenium2的功能
在selenium3中,我暂时没有找到这个接口。

10.什么是线程等待
有时候,我们需要强制设置线程等待,Thread.sleep(2000),driver这个实例,就是当前的线程。

11.什么是pollingEvery
这个是设置个一段时间就去做一件事,例如下面设置隔一秒就去查找元素一次。
 WebDriverWait wait = new WebDriverWait(driver,30);
 wait.pollingEvery(1, TimeUnit.SECONDS);
 driver.findElement(By.xpath("xxxx"));


相信你如果掌握了上图上面所有的知识技能,并且能够灵活的运用的话,月薪20k以上并不会是什么问题,上图的所有学习资料都已经整理好了
 

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

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

相关文章

谷歌浏览器安装插件(从 Edge 浏览器里获取插件)

前言: 因为谷歌插件 商店,国内(不科学上网)是无法访问的,所以 要安装插件就得 通过各种途径 下载后 解压,然后安装。 谷歌浏览器下载、安装插件的方式 方式一:自行 百度下载压缩包&#xff0…

win10安装telnet服务器(开启端口,开启telnet客户端后依旧显示:无法打开到主机的连接,在端口xxxx连接失败)

前言 注:我使用telnet的根本原因是想测试端口是否通,因为要使用花生壳, 而之所以会显示 启telnet客户端后依旧显示:无法打开到主机的连接,在端口xxxx连接失败 错误,本质原因是: 1、你没有teln…

tensorflow深度神经网络实现鸢尾花分类

tensorflow深度神经网络实现鸢尾花分类 本文目录tensorflow深度神经网络实现鸢尾花分类获取数据集相关库的导入数据展示和划分对标签值进行热编码模型搭建使用Sequential模型搭建模型模型训练对训练好的模型进行评估使用model模型搭建模型对训练好的模型进行评估损失函数优化方…

使用golang连接kafka

1 下载,配置,启动 kafka 下载链接 配置修改 在config目录下的server文件和zookeeper文件,其中分别修改kafka的日志保存路径和zookeeper的数据保存路径。 启动kafka 先启动kafka自带的zookeeper,在kafka的根目录下打开终端&a…

百模大战,谁是下一个ChatGPT?

“不敢下手,现在中国还没跑出来一家绝对有优势的大模型,上层应用没法投,担心押错宝。”投资人Jucy(化名)向光锥智能表示,AI项目看得多、投的少是这段时间的VC常态。 ChatGPT点燃AI大爆炸2个月中&#xff0…

为什么工控行业生意越来越难做了?

前段时间跟几个做工业品销售的朋友聚了一下,大家都说去年一年挺难的,有些甚至想把小店关了。为什么现在工业品领域越来越难做了呢?今天也想给大家说一说我的一些看法。 以前的工控生意相对现在来说较为有限和封闭,技术上也没有现今…

Android 大图检测插件的落地

作者:layz4android 在实际的项目开发中,引入图片的方式基本可以分为两种:本地图片和云端图片,对于云端图片来说,可以动态地配置图片的大小,如果服务端的伙伴下发的图片很大导致程序异常,那么可以…

前端视角-https总结

1.http存在的问题 1.1可能被窃听 HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送互联网是由联通世界各个地方的网络设施组成,所有发送和接收经过某些设备的数据都可能被截获或窥视。(例如TCP/IP抓包工具:Wireshark),即使经过加密处理,也会被窥视是通信内容,只是可能很…

在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效

前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里,我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果,那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能,包括虚拟背景、色彩增强、空间音频、基础变声…

HBase高手之路4-Shell操作

文章目录HBase高手之路3—HBase的shell操作一、hbase的shell命令汇总二、需求三、表的操作1.进入shell命令行2.创建表3.查看表的定义4.列出所有的表5.删除表1)禁用表2)启用表3)删除表四、数据的操作1.添加数…

TensorFlow 深度学习实战指南:1~5 全

原文:Hands-on Deep Learning with TensorFlow 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…

【通义千问】继ChatGPT爆火后,阿里云的大模型“通义千问”它终于来了

通义千问一、通义千问名字的由来二、通义千问和ChatGPT有什么区别呢?三、如何申请体验通义千问呢?四、未来通义千问能称为中国版的ChatGPT吗?五、通义千问什么时候正式发布呢?一、通义千问名字的由来 通义千问顾名思义&#xff0…

作物杂交——蓝桥杯20年省赛(JAVA)

题目链接: 用户登录https://www.lanqiao.cn/problems/506/learning/?page2&first_category_id1&sortstudents_count 题目描述 作物杂交是作物栽培中重要的一步。已知有 N 种作物 (编号 1 至 N ),第 i 种作物从播种到成熟的时间为 Ti​。作物…

少儿编程 电子学会图形化 scratch编程等级考试四级真题答案解析(判断题)2022年12月

2022年12月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 16、点击绿旗,反复按下空格键,可以使变量a的值在0和1之间反复变化 答案:对 考点分析:考查积木综合使用,重点考查变量积木的使用,按一下空格键,a变量值会改变5次,0-1-0-1-0-1,按第二下…

budibase <2.4.3 存在 ssrf 漏洞(CVE-2023-29010)

漏洞描述 budibase 是一个开源的低代码平台,元数据端点(metadata endpoint)是Budibase提供的一个REST API端点,用于访问应用程序的元数据信息。 budibase 2.4.3之前版本中存在 ssrf 漏洞,该漏洞可能影响 Budibase 自主托管的用户&#xff0…

安利安利-向大家推荐一个超级牛的etcd管理工具-EtcdKeeperFyne

etcd介绍 关于etcd的介绍大家可以看下这篇文章 etcd 开源仓库地址:EtcdKeeperFyne EtcdKeeperFyne 今天主要是向大家推荐一款使用起来特别方便的Etcd管理工具 EtcdKeeperFyne,具体运行起来的界面如下: 推荐原因 使用简单安装简单&…

卷积层输出尺寸计算 / 感受野尺寸计算

卷积层输出尺寸计算 输入图像a*a, 卷积核大小b*b, stride c, padding d 输出图像的尺寸:[(a - b 2d) // c] 1 (a - b 2d) 表示在输入图像两侧填充 d 个像素后,窗口在输入图像上最多能移动的距离,再加上 1 表示最后一个窗口的右侧边界…

博客文章效果

学习风宇blog md文档转html&#xff08;markdown-it的使用&#xff09;语法高亮、行号、一键复制toc生成目录sticky粘性定位 <style lang"scss"> import url(//at.alicdn.com/t/c/font_4004562_9v94jccafmc.css); import url(https://fonts.font.im/css?fam…

DFIG控制8: 不平衡电网下的网侧变换器控制

DFIG控制8&#xff1a; 不平衡电网下的网侧变换器控制。主要是添加网侧变换器的负序分量控制器。 本文基于教程的第8部分&#xff1a;DFIM Tutorial 8 - Asymmetrical Voltage Dips Analysis in DFIG based WT: Grid Side Converter Control 控制策略简介 来自&#xff1a;G…

过滤器(Filter)与拦截器(Interceptor)区别

1 过滤器&#xff08;Filter&#xff09; Servlet 中的过滤器 Filter 实现了 javax.servlet.Filter 接口的服务器端程序&#xff0c;主要用途是设置字符集&#xff08;CharacterEncodingFilter&#xff09;、控制权限、控制转向、用户是否已经登陆、有没有权限访问该页面等。 …