前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium Webdriver 3.X源码分析之command.py

Selenium Webdriver 3.X源码分析之command.py

作者头像
苦叶子
发布2019-10-11 11:10:05
4440
发布2019-10-11 11:10:05
举报
文章被收录于专栏:开源优测开源优测

> Selenium Webdriver 3.X源码分析系列第12篇,该系列原则上会将整个源码分享一遍

在了解command.py的源码前,我们先大致的了解下webdriver json wire protocol的基本知识。

基本概念:

所有与浏览器或RemoteWebDriver服务器通信的WebDriver实现都应该使用Webdriver Json Wire Protocol。这个连接协议使用HTTP上的JSON定义了一个RESTful web服务。

注意点:

  1. 这是所有webdriver客户端实现的基础协议,所有语言都遵循该协议与远程服务进行交互
  2. 该协议基于http协议,采用json格式进行数据交换
  3. 该协议已经实现为一套公共的RESTful web服务

所以从理论上,只要遵循webdriver json wire protocol协议,使用任何一门编程语言都可以进行web自动化测试。

在本文,我们接下来看看在selenium webdriver python端的源码,看看其相关的指令定义源码:

代码路径为:selenium > webdriver > remote > command.py

注意源码中的注释,这里大体如下:

  1. 标准的webdriver指令定义
  2. 指令常量本身是没有任何意义的,其意义取决于对应的webdriver服务的实现,即指令需要有对应的服务实现才会有意义
  3. 在github对应地址为:https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

在command.py中,提供了以下几类指令:

- 最核心的指令集,常规的浏览器、元素定位等等操作均定义在此

- alerts指令集,标准弹窗处理的指令

- 高级用户交互指令集,鼠标动作指令集

- 屏幕采集指令集,获取、设置屏幕指令

- 触摸指令集,触摸屏操作动作集

- HTML5指令集,html5支持指令集,得看具体的selenium版是否实现支持

- 移动指令集

都是些常量定义,又必要了解嘛?当然有必要,因为这些常量在其他地方都会用到,在remote_connection.py中,构建交互command时,如下

未完待续,持续更新中......

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档