【20221101每日面经】selenium - 解析 Selenium 工作原理

每日面经

  • 考察点: Selenium 原理

  • 题目: 如果你在面试过程中,被面试官问到:请讲一下Selenium的工作原理?你会如何回答呢?

1 个赞

selenium是一个基于浏览器(支持谷歌、火狐、IE)driver驱动浏览器,来控制脚本执行自动化测试,原理如图:

image

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语言的脚本了。

3 个赞

今天上午腾讯面试刚问到这个,面完就看见帖子了〒▽〒,哭死了

前提:因为这是一个面试,所以尽可能将自己确定的知道的东西都讲出来,说得就比较通俗但啰嗦

答:
据我了解,Selenium 是一个工具集,其中用于做Web自动化测试的部分只有1.x时期使用的是 Selenium RC,当前 Selenium Webdriver,所以我先回答一下「Selenium Webdriver 用于 Web ui自动化测试时的工作原理」你看可以吗?

Selenium Webdriver 技术实现浏览器控制,主要是下面三个角色发挥作用:

  1. Selenium Webdriver API:管理browser driver服务、将各语言实现的操作脚本转换为restFul风格的HTTP请求发往browser driver服务,对应常见编程语言都有对应实现
  2. 浏览器对应的驱动 browser driver(如chromediver):浏览器自家实现的驱动,里面封装了调用浏览器原生API的功能,启动为HTTP服务后,监听本Webdriver实例的请求并调用对应sessionID的浏览器进程中的Native API,将浏览器操作结果以HTTP响应方式返回给 Selenium Webdriver API
  3. 浏览器客户端进程(如chrome):接收来自用户或者browser driver的操作指令,执行对浏览器本身、网页内容的操作,返回操作结果给browser driver服务

换成现实中的例子就是:
不同语言的乘客(Python)用经过翻译器(Selenium Webdriver Python API)指挥出租车司机(chromedriver)驾驶汽车(chrome浏览器)去具体的终点(Web page 具体操作)

真正开车的是司机,不同的司机会开的车不同,所以bowser driver版本的和版本要和浏览器相对应

2 个赞

解答思路:

4 个赞