博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selenium Remote Server 实现原理
阅读量:6255 次
发布时间:2019-06-22

本文共 1849 字,大约阅读时间需要 6 分钟。

selenium作为一个出色的web automation框架,被越来越多的企业采用究其原因,框架设计的比较remarkable,

作为一个开源的框架,能够开辟出一套协议,以至于针对app测试的appium采取相同的strategy。使用的是webdriver protocol的扩展版。

为什么说这个框架设计的比较好?究竟好在哪里?

先从表面上看:

  1. selenium automation framework 支持多语言,java、python、c#、JavaScript、Perl、ruby ...... 测试工具中,能支持这么多语言还不牛逼么 ?QTP/UFT才只支持vbs
  2. 跨平台支持windows/linux/Mac OS
  3. 支持grid
  4. 拥有page object model和page factory

以上,均是不可多得的设计,那么问题又来了,为什么selenium支持那么多语言,怎么实现的?

我想,我给出的答案是协议,selenium remote server/webdriver/appium等完全遵循webdriver json protocol

通过json协议实现跨语言跨平台。如果想了解更多webdriver的Json协议,请参考

如果你也要使用restful 自己测试一下下载使用restclient-ui-3.5-jar-with-dependencies.jar

让我们来验证这一点,首先你需要一个restful client 和一个chromew ebdriver,selenium-server-standalone-2.48.0.jar

在cmd起remote server

java -Dwebdriver.chrome.driver="chromedriver.exe"  -jar selenium-server-standalone-2.48.0.jar

启动成功,接下来打开浏览器:打开

1.创建session

2.打开百度

3.创建截图

那么这个过程是在怎么实现呢?

看webdriver 的protocol

第一步创建session:Post  http://127.0.0.1:4444/wd/hub/session

如果不想使用默认的,可以通过post desiredCapabilities

这样设置body

{ "desiredCapabilities": {      "browserName": "chrome",      "javascriptEnabled": true,      "platform": "ANY",      "version": "55"   }}

 

可使用上面的办法,拿到session ID

第二步:打开百度

发送Post  http://localhost:4444/wd/hub/session/85a32b0f-e617-449a-bcea-8c84ffa2c5f4/url

 Body:

{"url":"http://www.baidu.com"}

第三步:findElement By id

发送Post http://localhost:4444/wd/hub/session/85a32b0f-e617-449a-bcea-8c84ffa2c5f4/element

{    "using": "id",    "value": "kw"}

也可以使用xpath

{    "using": "xpath",    "value": "//input[@id='kw']"}

 

 第三步:输入selenium 从上一步获取element ID为1

发送 Post http://localhost:4444/wd/hub/session/935821aa-6074-4fc9-bd26-eedf483d6c9d/element/1/value

Body

{    "value": [        "selenium"    ]}

 

 

总结:

 

selenium remote sever 其实就是通过webdriver Json与浏览器交互,这也就介绍了为什么selenium能够实现支持各种语言,

不管是java python 等,都是通过selenium API翻译成Json 与浏览器进行交互。掌握了webdriver protocol 可以通过自己直接写request来

实现与浏览器交互

 

转载地址:http://wfnsa.baihongyu.com/

你可能感兴趣的文章
c/c++处理参数
查看>>
编译ycm库
查看>>
云计算行业的微笑曲线仍在,价值传递的中间环节并未减少
查看>>
CI 失败的五大原因
查看>>
指令汇B新闻客户端开发(二) 主页面布局
查看>>
高通Qualcomm平台lk(light kernel)启动流程2——aboot_init()
查看>>
【LeetCode从零单排】No26.Remove Duplicates from Sorted Array
查看>>
java-CompletionService
查看>>
【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文
查看>>
中断和异常的概念
查看>>
Xdebug是一个开放源代码的PHP程序调试器
查看>>
无线安全技术:移动医疗技术及应用概述
查看>>
携程数据库全线崩溃引热议 总结网友奇葩的“数据库门”
查看>>
【★】选择好游戏认准这30个特质!
查看>>
CIO与CMO推动数据驱动的营销战略
查看>>
IPv4还没终结 IPv6时代已悄然到来
查看>>
你所不知道的大数据:一条微博得到王思聪手机号
查看>>
不可思议的德国汉堡,一座不能被忽略的城市!
查看>>
【喜大普奔】GN5i华东华南可以购买啦
查看>>
Power AI:堪称机器学习的“破壁人”
查看>>