Selenium学习之路01-了解Selenium

  1. 什么是Selenium?

Selenium是一个用于WEB应用程序的工具。它是由一些插件和类库组成的

Selenium1.0的家谱图如下:

 

 

 

Selenium IDE:嵌入到Firefox的一个插件,主要实现浏览器的录制与回放

Selenium Grid:自动化测试的辅助工具,主要实现在多台机器上的异构环境运行测试用例

Selenium RC(Remote Control):分为Client Libraries和Selenium Server.Client Libraries主要用于编写测试脚本来控制Selenium Server的库.Selenium Server负责控制浏览器的行为,主要包含了Launcher,Http Proxy,Core.Launcher用于启动浏览器,把Selenium Core加载到浏览器当中,并把浏览器代理设置为Selenium Server的Http Proxy

Selenium2.0=Selenium1.0+WebDriver

WebDriver是通过原生浏览器支持或者扩展来直接控制浏览器。支持创建更高级的测试,避免了JavaScript安全模型导致的限制。可以看做SeleniumRC的替代品

 

  1. Selenium的优点有哪些?

开源,免费

多浏览器支持:Firefox,Chrome,IE,Opera,Edge

多平台支持:Linux,Windows,MAC

多语言支持:Java,Python等

支持分布式测试用例执行

3.Selenium- WebDriver工作原理

 Webdriver工作原理

 

目前来说我们主要使用Webdriver来进行测试用例的编写,所以此处重点了解Webdriver工作原理。

(1)实例化WebDriver,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。若匹配则在目标浏览器里启动一整套Web Service。这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、文件上传等等

(2)发送请求时,用WebDriver的HttpCommandExecutor类将命令转换为URL作为value,命令作为key一起存入map作为request,同时会在request的body中存放相应的By Xpath、id、name。实际发送的URL都是相对路径,后缀多以/session/:sessionId开头,这也意味着WebDriver每次启动浏览器都会分配一个独立的sessionId,多线程并行的时候彼此之间不会有冲突和干扰。比如我们常用到的find_element_by_class_name这个接口,会转化为/ session / : sessionId / element这个url,然后在发出 Http Request Body内再附上具体的参数,比如class name的值。比如我们要访问某一个网站,请求地址为:http : // localhost : 46350 / wd / hub / session / sessionId / url ,请求json内容:{"url":"http://www.qq.com"}。比如查找一个classname为test的元素,请求地址后缀为/ session / sessionId / element ,json 内容{" using" : "class_name" , "value" : "test" }。

(3)收到并执行了这个操作之后,也会回复一个Http Response。内容也是Json,会返回找到的element的各种细节,比如text、CSS selector、tag name、class name等等。比如:

{"sessionId":"XXXXX","status":0,"state":"

success","value":

{"ELEMENT":"2"},"class":"XXX","hCode":"XXX"}

 

参考文档和博客:

http://www.uml.org.cn/Test/201807301.asp

Selenium 2自动化测试实战 基于Python语言 ,虫师编著

posted @ 2021-05-18 10:46  三国初梦  阅读(80)  评论(0)    收藏  举报