文章转载请告之。

Selenium WebDriver原理

上一篇 / 下一篇  2013-05-21 11:30:31 / 个人分类:软件测试杂文

揭秘webdriver实现原理

 

研究selenium-webdriver的源,笔者发现webdriver实现原理并不高深莫无法揣度。在里以webdriver ruby bindingfirefox-webdriver实现为例,简单一下webdriver工作原理。

测试脚本启firefox候,selenium-webdriver会首先在新线程中启firefox浏览器。如果测试脚本指定了firefoxprofile,那么就以profile,否就新启1profile,并启firefox

 

firefox一般是以-no-remote的方法启,启selenium-webdriver会将firefox定到特定的端口,定完成后firefox例便作webdriverremote server存在;

 

(也就是测试脚本)1session,在session中通http求向remote serverrestful求,remote server解析求,完成相操作并返回response

 

端接受response,并分析其返回以决定是到第3束脚本;

 

 

就是webdriver的工作流程,看起来很复杂实际上当了解了webdriver实现原理后,理解上述问题应该较简单

 

webdriver是按照server – client设计模式设计的。

 

server端就是remote server,可以是任意的浏览器。当我的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client求并做出相

 

client简单说来就是我测试,我们测试中的一些行,比如打开浏览器,跳到特定的url等操作是以http求的方式测试浏览器,也就是remote serverremote server接受求,并行相操作,并在response中返回行状、返回等信息;

 

实际的例子,下面代的作用是”命令”firefox跳到google

driver = Selenium::WebDriver.for :firefox

 

driver.navigate.to "http://google.com"

 

 

driver.navigate.to “http://google.com”句代码时client,也就是我测试remote server送了如下的求:

POST session/285b12e4-2b8a-4fe6-90e1-c35cba245956/url

 

post_data {"url":"http://google.com"}

 

 

post的方式localhost:port/hub/session/session_id/url地址,浏览器完成跳url的操作。

 

如果上述求是可接受的,或者remote server实现个接口,那么remote server会跳post data包含的url,并返回如下的response

{"name":"get","sessionId":"285b12e4-2b8a-4fe6-90e1-c35cba245956","status":0,"value":""}

 

 

response中包含如下信息

nameremote server端的实现的方法的名称,里是get,表示跳到指定url

 

sessionId:当前sessionid

status行的状态码,非0表示未正确行,里是0,表示一切ok担心;

 

value求的返回里返回值为空,如果clienttitle接口,则该值应该是当前面的title

 

如果client送的求是定位某个特定的面元素,response的返回可能是这样的:

{"name":"findElement","sessionId":"285b12e4-2b8a-4fe6-90e1-c35cba245956","status":0,"value":{"ELEMENT":"{2192893e-f260-44c4-bdf6-7aad3c919739}"}}

 

name,sessionIdstatus跟上面的例子是差不多的,区该请求的返回ELEMENT:{2192893e- f260-44c4-bdf6-7aad3c919739},表示定位到元素的id,通过该idclient可以送如click求与server行交互。

 

那么remote server


TAG:

 

评分:0

我来说两句

西门吹雪

西门吹雪

关注测试管理,自动化测试,测试设计

日历

« 2024-04-30  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 77764
  • 日志数: 99
  • 建立时间: 2012-02-17
  • 更新时间: 2018-05-10

RSS订阅

Open Toolbar