Selenium原理精讲

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试(目前支持的语言有Java,Python,Ruby,C#),并且 Selenium能够在一个或多个浏览器中执行这些测试。Selenium最常用的版本是Selenium2和Selenium3。大家可以理解为selenium3是selenium2的升级版本,主要更新内容如下:

  • 去掉了对selenium rc的支持
  • 全面拥抱java 8。 如果你需要使用selenium的java binding话,那么你就必须使用java 8了。
  • 支持macOS (Sierra or later),支持官方的safaridriver。
  • 通过ms官方的webdriver server支持Edge浏览器。只支持ie 9.0版本以上。
  • 通过Mozilla官方的geckodriver来支持firefox。火狐从47版本开始使用Gecko引擎,该引擎支持多进程。
  • 简单点讲就是如果你想要测试自己的产品在最新版本浏览器中的运行情况,必须使用selenium3!

下面我就为大家详解selenium的两个核心问题:

1.支持多种语言;

2.可以在多个浏览器中运行脚本

Selenium的架构可以用下面的图进行概述:

 

 

蓝色的图Selenium Language Binding就是我们平时使用的编码语言,包括java、python等等。可以看到这些语言并没有直接与Browser Drivers进行通信,而是通过了JSON WireProtocol,这就是webdriver协议 ,详情请参考https://www.w3.org/TR/webdriver/ 。

简单的说他定义了一套接口规范,以我们最熟悉的点击操作为例,他对应的接口协议是:

POST /session/{session id}/element/{element id}/click

这样一来,无论我们编码使用python代码来执行点击操作:

driver.find_element_by_id("").click()

还是以java代码执行点击操作:

driver.findElement(By.id("")).click();

都会通过selenium客户端的程序将click操作转化成对应的webdriver协议。这样对于Browser Drivers来说只需要解析具体协议,而无需关注客户端使用的是哪种代码了,这就是selenium支持多种语言的原理。在Browser Drivers中可以看到各个浏览器的driver,这里我们以chromedriver为例进行讲解。在代码中直接 new ChromeDriver() 将会启动一个 ChromeDriver进程,ChromeDriver是一个独立的服务,它是 google为网站开发人员提供的自动化测试接口,它是 selenium 和chrome浏览器进行通信的桥梁。chromeDriver解析webdriver协议,然后根据解析结果,调用与之对应的Chrome DevTool Protocol(CDP)协议来操控chrome浏览器,它可以和浏览器内核进行交互进而操控浏览器,这里就不对该协议进行详细介绍了,以上就是selenium操控chrome浏览器的原理。以此类推,大家就会了解为什么使用selenium2和3操控不同的浏览器,需要先下载与其对应的浏览器driver了。如果文章帮到了你,欢迎点赞转发!

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值