当前位置: 首页 > news >正文

最新整理:Selenium自动化测试面试题

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

find_elements查找到的元素个数为0,find_element报错意味着元素不存在

2.如何判断元素是否出现?

判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的元素,但是是hidden状态

可以通过先判断是否存在,如果不存在返回false;如果存在再去判断是否displayed。

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

可以定位,无法进行交互操作

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

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

  • 通过显式等待,避免由于元素属性变化引起的失败

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

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

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

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

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

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

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

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

6.用例在运行过程中经常会出现不稳定的情况,比如这次运行成功,下次可能运行失败,如何去提升用例的稳定性?

此时我们要分析出不稳定的原因,然后有针对性的去解决问题。主要有以下几个方面 :

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

二,Selelnium的原因:selenium版本差异,或当前Selenium版本缺陷导致,如果是版本差异导致,可能需要更新代码,如果是。

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

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

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

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

  • 通过显式等待,等待动态元素出现,而后马上进行操作

9.如何去定位属性动态变化的元素?

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

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

  • 会的

11.你的自动化用例的执行策略是什么?

1.自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;

2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;

3.有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

12.webdriver client的原理是什么?

webdriver是按照server – client的经典设计模式设计的。以火狐浏览器为例:

当测试脚本启动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步还是结束脚本;

13.webdriver的协议是什么?

The WebDriver Wire Protocol

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

http

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

二次定位,或者通过xpath直接根据value值定位

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

通过JS重置元素属性,给定位的元素加背景、边框,然后在selenium中执行该JS语句

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

使用自己熟悉的语言,倾向于python

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

-不需要,断言语句一般放在测试类中,页面类主要管理页面元素与操作

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

get方法跳转、click超链接实现页面跳转;

20.webdriver可以用来做接口测试吗?

不可以
在这里插入图片描述

http://www.lryc.cn/news/478784.html

相关文章:

  • 外包干了2年,快要废了。。。
  • 乐尚代驾十订单支付seata、rabbitmq异步消息、redisson延迟队列
  • HCIP--3实验- 链路聚合,VLAN间通讯,Super VLAN,MSTP,VRRPip配置,静态路由,环回,缺省,空接口,NAT
  • Apple提出MM1.5:多模态大型语言模型微调的方法、分析和见解_mm1.5 模型下载
  • 【毫米波雷达(三)】汽车控制器启动流程——BootLoader
  • AI 搜索来势汹汹,互联网将被颠覆还是进化?
  • 《二分查找算法:在有序数组中搜索目标值》
  • 【万字总结】数据结构常考应用大题做法画法详解_树_哈希表_图_排序大总结
  • Docker + Jenkins + gitee 实现CICD环境搭建
  • rabbitMq怎么保证消息不丢失?消费者没有接收到消息怎么处理
  • 商务数据分析在提升客户体验方面的作用体现在哪些环节
  • cooladmin使用整理
  • CentOS 7 更换软件仓库
  • 现代Web开发:React Hooks深入解析
  • HarmonyOS使用arkTS拉起指定第三方应用程序
  • flex安装学习笔记
  • 09-结构化搜索、搜索的相关性算分
  • 手机屏幕上进行OCR识别方案
  • 遗传算法与深度学习实战(22)——使用Numpy构建神经网络
  • react->Antd->Table调整checkbox默认样式
  • 一种ESB的设计
  • 上位机常用通信方式
  • Vue3中使用LogicFlow实现简单流程图
  • 《重学Java设计模式》之 工厂方法模式
  • 【大数据学习 | kafka】kafka的数据存储结构
  • 知识竞赛答题系统,线上答题小程序链接怎么做?
  • 基于SSM的社区物业管理系统+LW参考示例
  • android——jetpack startup初始化框架
  • 英伟达HOVER——用于人形机器人的多功能全身控制器:整合不同的控制模式且实现彼此之间的无缝切换
  • GEE代码学习 day17