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来驱动。
posted on 2020-08-09 16:46 www.blender-3d.cn 阅读(145) 评论(0) 编辑 收藏 举报