selenium工作原理总结

之前用python的第三方库selenium,搭配unittes,HTMLTestRunner,jenkins来进行自动化测试,大概的流程就是找元素,操作元素,获取结果进行比较,其中有很多api可以使用,但是它的工作原理是怎么样的呢?先来看一张图。

客户端:就是我们的各种语言,python,java,用来发起请求的

webdriver协议:实质上就是一种http协议,但是它基于一种严格的json协议JSON Wire protocol

浏览器驱动:各种浏览器都有对应的驱动,比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe

过程如下:

1.运行用python写好的selenium脚本,它会像web service中发送一个http请求

2.浏览器驱动中的web service 会根据这个请求生成对应的js脚本,因为不同的浏览器,相同的操作生成的js脚本会有所不同,因此不同的浏览器要有不同的驱动

3.js脚本驱动浏览器,产生各种操作,并返回给web service

4.web service将结果通过http响应的形式返回给客户端

必须指出的是:

1.在WebDriver中为了给用户以更明确的反馈信息,提供了更细化的http响应状态码,比如:

7: NoSuchElement

11:ElementNotVisible

200:Everything OK

2.返回值类似于{ “sessionid”:123, “status” : 0, “value” : {“element” : “123422”}},这可能是一个查找元素的返回(get_element_by_id),因为带有sessionid,因此grid可以实现分布式,操作多个浏览器

3.只要语言实现了webdriver协议就可以,所以同一个浏览器的驱动就即可以处理Java语言的脚本,也可以处理Python语言的脚本了。

其实这个和之前说的appium的原理一样,都是用到了webdriver协议来发送请求,获取响应,也和语言无关,但是不同的是appium service会生成bootstrap.js/bootstrap.jar,并将其注入到device中来驱动其中的uiautomator/uiautomation,以此来达到驱动device的目的,而selenium则使用js来驱动。

原文地址:https://www.cnblogs.com/wwwblender-3dcn/p/13463335.html