selenium专项面试题

Posted 憨憨说测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium专项面试题相关的知识,希望对你有一定的参考价值。

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

selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断。

# 判断元素是否存在

try:

dr.find_element_by_id('none')

except NoSuchElementException:

print 'element does not exist'

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

不可以,selenium不能定位不可见的元素。display=none的元素实际上是不可见元素。

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

  • 当网速不好的情况下,使用合适的等待时间

  • 被点击的元素一定要占一定的空间,因为selenium默认会去点这个元素的中心点,不占空间的元素算不出来中心点;

  • 被点击的元素不能被其他元素遮挡;

  • 被点击的元素不能在viewport之外,也就是说如果元素必须是可见的或者通过滚动条操作使得元素可见;

  • 判断元素是否是可以被点击的

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

  • 使用更高配置的电脑和选择更快的网络环境

  • 使用效率更高的语言,比如java执行速度就快过python

  • 优化代码

  • 不要盲目的加sleep,尽量使用显式等待

  • 对于firefox,考虑使用测试专用的profile,因为每次启动浏览器的时候firefox会创建1个新的profile,对于这个新的profile,所有的静态资源都是从服务器直接下载,而不是从缓存里加载,这就导致网络不好的时候用例运行速度特别慢的问题

  • chrome浏览器和safari浏览器的执行速度看上去是最快的

  • 可以考虑分布式执行或者使用selenium grid

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

  • 测试专属profile,尽量让静态资源缓存

  • 尽量使用显式等待

  • 尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰

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

  • 每日执行:比如每天晚上在主干执行一次

  • 周期执行:每隔2小时在开发分之执行一次

  • 动态执行:每次代码有提交就执行

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

一般不需要,因为这是单元测试层做的事情,在自动化测试层尽量不要为单元测试层没做的工作还债。

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

xpath和css最为灵活,所以其他的答案都不够完美

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

显式等待

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

找出属性动态变化的规律,然后根据上下文生成动态属性。

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

java binding在点击链接后会自动等待页面加载完毕。

selenium的原理是什么?

selenium的原理涉及到3个部分,分别是

  • 浏览器

  • driver: 一般我们都会下载driver

  • client: 也就是我们写的代码

client其实并不知道浏览器是怎么工作的,但是driver知道,在selenium启动以后,driver其实充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver,driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client。这就是selenium工作的大致原理。

webdriver的协议是什么?

client与driver之间的约定,无论client是使用java实现还是c#实现,只要通过这个约定,client就可以准确的告诉drier它要做什么以及怎么做。

webdriver协议本身是http协议,数据传输使用json。

这里有webdriver协议的所有endpoint,稍微看一眼就知道这些endpoints涵盖了selenium的所有功能。

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

New Session,如果创建成功,返回sessionId和capabilities。

什么是page object设计模式?

简单来说就是用class去表示被测页面。在class中定义页面上的元素和一些该页面上专属的方法。

最后,下面是我整理出来的一份软件测试工程师发展方向知识架构体系图。

希望大家能在这个成长过程中收益良多。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

由于CSDN上传图片大小有限,有需要的朋友可以关注我的公众号:程序员二黑,回复1,即可获取原图。

下面是一份配套的软件测试资源包:

上面是一些配套资源,对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注我的微信公众号:程序员二黑,即可免费获取!

最困难的时候,也就是我们离成功不远的时候!如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流学习。

 

以上是关于selenium专项面试题的主要内容,如果未能解决你的问题,请参考以下文章

Java之异常专项练习Java面试题

Java之异常专项练习Java面试题

朝夕教育2023年03月 其他-Web前端基础面试题(react专项_35道)

朝夕教育2023年03月 其他-Web前端基础面试题(VUE专项_58道)

python+selenium面试题

Selenium的面试题