• 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来驱动。

  • 相关阅读:
    软件测试 -- alpha测试和beta测试的区别
    软件测试--各种测试的概念
    linux 安装memcached
    Visual Studio 2013 Preview
    基于HAL库STM32的FSMC驱动8位TFTLCD屏
    LM358电压跟随器
    广耦的应用
    MOS管的开关作用
    三极管的开关作用
    STM32的BOOT0 BOOT1的选择
  • 原文地址:https://www.cnblogs.com/wwwblender-3dcn/p/13463335.html
Copyright © 2020-2023  润新知