Selenium常见面试题
1. Selenium工作原理?
- Selenium客户端(Java代码)首先启动驱动程序,调用驱动打开浏览器
- get访问网址/点击/输入…这些操作会通过指令发送给驱动,由驱动再次传给浏览器解释执行,通讯采用的是WebDriver协议
- 浏览器将执行结果通知到客户端
2. Selenium有哪一些组件?
- Selenium IDE 浏览器一款插件,可以支持录制/回放脚本,不太适合做自动化
- Selenium WebDriver 可以支持各种类型的语言(Java/Python…)编写自动化脚本
- Selenium Grid 分布式测试,可以将自动化测试脚本分发到各台主机上面执行
3. WebDriver协议是什么?
- Selenium客户端与驱动程序通讯的协议,基于http协议做了二次封装,兼容各种语言实现Selenium客户端
4.Selenium中的三大等待分别是?
- 强制等待
- 显式等待
- 隐式等待
5.web ui自动化中显式等待、隐式等待有什么区别?
- 相同点:
- 都是在设置的超时时间范围内一直不断的去找元素
- 不同点:
- 作用范围不同 隐式等待:全局的 显式等待:针对特定的元素
- 等待条件不同 隐式等待:只会等待元素在源代码中存在 显式等待:有更多的丰富的条件,等待元素可见、可被点击…
- 超时异常不同 隐式等待:NoSuchElementException 显式等待:TimeoutException
元素定位常见面试题
1. 请尽可能多的列出自动化的元素定位方式,以及你最常用的定位方式?
- 8种元素定位:id、name、classname、tag、linktext、partiallinktext、css选择器、xpath
- 常用的定位方式:xpath、css选择器
2. 如果一个元素无法定位,你一般会考虑哪些方面的原因?
- 检查你的元素定位表达式是否写错
- 确保元素加载出来(等待:三大等待)
- 元素是否在iframe中,需要切换iframe
- 元素如果是在新的窗口中,需要切换窗口
…(其他原因待补充)
3. 动态属性元素如何定位?
- 根据元素属性规律来判断,是否有一些固定的字符串(固定前缀or固定后缀),xpath的contains模糊匹配
- 通过其他的属性/文本选择定位