软件自动化测试之selenium中webdriver的工作原理

做软件测试行业的都知道,自动化测试的覆盖的趋势越来越明显了,如果去面试一个软件测试工程师,如果不会点自动化测试的技能都不好意思说自己是做软件测试的,而如今selenium在自动化测试工具的市场占比也是越来也高,所以后面的内容,我会一一为大家分享软件自动化测试中selenium的相关知识。

selenium

关于selenium是怎么工作的呢,我记得之前听过一个比喻很形象。,假如我们出门坐出租车,我们首先要做的就是拦一辆出租车,并跟司机传达我们所要去的目的地,然后司机启动车辆,带我们到达目的地。

找出租车-告诉司机去哪,司机带你到目的地

其实类比过来,webdriver里面的角色也跟上述差不多:

1.工程师所写的测试代码,无论是python、JAVA、还是C#等都会先发送请求给我们的浏览器驱动,如火狐、谷歌、IE这些。

2.浏览器收到了驱动发过来的指令,就开始根据指令进行工作。

没错,你看,我们的代码就是对应的指令传达,浏览器驱动就是我们的司机,整个浏览器就是我们所有人的载体,出租车。

通过上述形象的对比,我们可以得到一个流程,给指令,驱动工作,浏览器工作。

从技术层面上来说,上述三者就是我们所谓的WebDriver API、browser driver、以及我们的borwser如谷歌、火狐、IE这些。

接下来我们看一下这个通讯过程是怎么实现的,首先,先抛出一个问题,为什么selenium可以支持多种语言,像python、java、c#等。其实对于我们的每条selenium脚本而言,都如同创建一个http请求,并发给对应的浏览器驱动,浏览器驱动中包含了一个http server,用来接收并转换成对应的操作对浏览器进行操控,然后浏览器将对应的结果返回给浏览器驱动。

所以说,归根究底,都是各种脚本通过我们的HTTP协议对浏览器发送请求,接收结果的一个过程,中间由我们对应的浏览器驱动进行转化,所以说,无论用什么语言,本质上是一样的。

既然说到请求,那就免不了说一下我们的客户端和服务端,我们的浏览器驱动相当于一个客户端,浏览器相当于服务端。

再往深一步继续,WebDriver基于的协议:JSON Wire protocol。

我们知道,HTTP请求有很常见的GET、POST等,举个例子,我通过POST请求给对应的接口发送一串JSON数据,如:

{

“name”: “chongwei”,

“age”: “29”,

“moble”: “unknow”

}

然后浏览器接收到了数据,进行结果返回:

{“status” : 0, “value”: {“element” : “66666”}}

当然,这个过程就是通过JSON Wire protocol协议进行通讯的,也就是说,这个就是我们的传声筒,通过它,我们要到达的目的地才能让司机知会,然后进行开车出发。

以上,差不多就是webdriver的白话版工作原理了。

希望能帮助到大家,如果觉得有用的话,请关注下小编,你的关注是我更新的动力。

从这里开始,希望有志于从业于软件测试行业的,一起加油努力吧,只为更好的生活和自己。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月21日
下一篇 2018年10月21日

相关推荐