每日面经
-
考察点: Selenium 原理
-
题目: 如果你在面试过程中,被面试官问到:请讲一下Selenium的工作原理?你会如何回答呢?
selenium是一个基于浏览器(支持谷歌、火狐、IE)driver驱动浏览器,来控制脚本执行自动化测试,原理如图:
1.对于每一条Selenium脚本,一个http请求会被创建并且发送给浏览器的驱动
2.浏览器驱动中包含了一个HTTP Server,用来接收这些http请求
3.HTTP Server接收到请求后根据请求来具体操控对应的浏览器
4.浏览器执行具体的测试步骤
5.浏览器将步骤执行结果返回给HTTP Server
6.HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。
WebDriver基于的协议:JSON Wire protocol
JSON Wire protocol是在http协议基础上,对http请求及响应的body部分的数据的进一步规范。body部分主要传送具体的数据,在WebDriver中这些数据都是以JSON的形式存在并进行传送的,这就是JSON Wire protocol。所以在Client和Server之间,只要是基于JSON Wire Protocol来传递数据,就与具体的脚本语言无关了,这样同一个浏览器的驱动就即可以处理Java语言的脚本,也可以处理Python语言的脚本了。
今天上午腾讯面试刚问到这个,面完就看见帖子了〒▽〒,哭死了
前提:因为这是一个面试,所以尽可能将自己确定的知道的东西都讲出来,说得就比较通俗但啰嗦
答:
据我了解,Selenium 是一个工具集,其中用于做Web自动化测试的部分只有1.x时期使用的是 Selenium RC,当前 Selenium Webdriver,所以我先回答一下「Selenium Webdriver 用于 Web ui自动化测试时的工作原理」你看可以吗?
Selenium Webdriver 技术实现浏览器控制,主要是下面三个角色发挥作用:
换成现实中的例子就是:
不同语言的乘客(Python)用经过翻译器(Selenium Webdriver Python API)指挥出租车司机(chromedriver)驾驶汽车(chrome浏览器)去具体的终点(Web page 具体操作)真正开车的是司机,不同的司机会开的车不同,所以bowser driver版本的和版本要和浏览器相对应
解答思路: