之前看乙醇视频中提到,selenium的ruby实现有一个小后门,在代码中加上$DEBUG=1,再运行脚本的过程中,就可以看到客户端请求的信息与服务器端返回的数据;觉得这个功能很强大,可以帮助理解webdriver的运行原理。
后来查了半天,python并没有提供这样一个方便的后门,不过我们可以通过代理的方式获得这些交互信息;
一、需要安装java虚拟机与selenium-server-standalone,参考 《selenium + python自动化测试环境搭建》第7、8操作:
二、通过下面命令启动服务:
C:\selenium>java-jarselenium-server-standalone-2.33.0.jar
在命令结尾加>d:\log.txt可以将命令信息存入文件,但信息很少。
然后运行下面的自动化脚本:
webdriver原理:
1.WebDriver启动目标浏览器,并绑定到指定端口。webdriver原理该启动的浏览器实例,做为webdriver的remoteserver。
2.Client端通过CommandExcuter发送HTTPRequest给remoteserver的侦听端口(通信协议:thewebriverwireprotocol)
3.Remoteserver需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用。
查看命令提示符下的运行日志:
咋一看很乱,慢慢分析一下就发现很有意思!结合上面的脚本分析
request请求/response应答
一次请求会对应一次应答
POST/GET是请求(request)两种类型;关于两种请求方式的类别参考其它资料
200、203是HTTP请求返回的状态码,200表示成功;
sessionid:每一个访问服务器的客户端,都要先得到服务器端分配的一个sessionid,就像通行证一样,只有得到sessionid的客户端才能向服务器请求想要的数据。
其它还包括操作系统版本,浏览器类型、URL、字符类型等非常详细的记录。熟悉HTTP,了解TCP的三次握手四次挥手,相信你对浏览器的交互与webdriver原理会有更深入的认识。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29292-1.html
如果没蛆虫
你知道吗
无比感触~