selenium自动化测试
- selenium用于wed应用程序的UI自动化测试工具
- 可以跨平台(windows,Mac,Linux)
- 支持所有主流浏览器,包括(IE,chrome,Firefox,Edge,Safari等)
为什么selenium可以支持这么多浏览器
- selenium WebDriver是典型的Server-client模式
- 浏览器厂商会提供驱动浏览器操作的中间件(webDriver),通过这个中间件可以直接驱动浏览器执行各种操作,比如滑动,点击,输入,下拉等
selenium工作原理
它的工作原理可以简述为以下几个步骤:
- 1、首先通过不同的语言按照jsonwire协议编写好用例,也就是client端,把用例发送给RemoteServer
- 2、RemoteServer负责绑定某一个具体的浏览器,监听client端发来的请求,再解析这个请求,转发给浏览器驱动
- 3、对应的浏览器驱动拿到这个转发的信息后,对对应的浏览器进行操作(点击,下拉,输入,滑动等)
- 4、浏览器再把执行完后的结果给到浏览器驱动,浏览器拿到结果传递给Remotesever,Remotesever进一步把结果给到client,client根据返回的结果与预期的结果进行对比,判断这个用例执行是否成功
总之,Selenium通过模拟用户在浏览器中的行为,来验证网站和应用程序的正确性、可靠性和稳定性。
Selenium脚本执行时后端实现的流程:
- 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语言的脚本了。