本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始。

在《第一个Selenium RC测试案例》中,我们以命令“java -jar selenium-server.jar”启动了Selenium Server,其实在启动Selenium Server时,我们还可以加上各种参数(具体的参数请参考《Selenium RC服务器命令行参数列表》), 而开启Selenium Server交互模式的命令为“java -jar selenium-server.jar -interactive”。交互模式,是Selenium Server提供的一种快速的测试方法,你可以对Selenium Server输入命令从而直接启动测试。

1.启动Selenium Server交互模式

2.在命令行中输入:cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com。控制Selenium Server启动浏览器,以及创建Session。

(1).---> Requesting http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com

看过《深入了解Selenium RC工作原理(1)》的应该了解:我们所编写的测试案例,其实是通过发送Http请求实现对Selenium Server的控制,而测试案例所发送的请求就正是:---> Requesting http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com。我们可以再打开一个IE浏览器,在地址栏输入:http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com,回车!看,Selenium Server又为此产生了一个Session了!呵呵:>

(2).这里,Selenium Server为上面的请求随机生成了一个Session ID:9505f5f8c52041c28f4cdc1f8e59f769(由于写这篇文章的时候中途重启了Selenium Server,所以这里和上图的Session ID不同,并且下文会继续使用Session ID:9505f5f8c52041c28f4cdc1f8e59f769)。

(3).如果一切正常,Selenium Server最后会出现Get Result Ok的字样,并出现如下两个框框:

3.控制浏览器访问www.google.com/webhp,输入:cmd=open&1=http://www.google.com/webhp&sessionId=9505f5f8c52041c28f4cdc1f8e59f769

 

噢,浏览器成功访问http://www.google.com/webhp了:>。

总结一下:

(1).在Selenium Server中输入命令的格式为:cmd=Command&1=Target&2=Value&SessionID=…,这和Selenium IDE的案例语句很像。

(2).在输入命令后,Selenium Server会发条Http请求给自己,请求的URL格式也是固定的:http://localhost:4444/selenium-server/driver?cmd=Command&1=Target&2=Value&SessionID=…,我们完全可以用浏览器发送请求控制Selenium Server进行测试。

(3).另外,sessionId是很重要的一个参数,当一个Selenium Server同时运行多个测试案例时,Selenium Server就是通过sessionId判断到底该操作哪个浏览器窗口。而在下面的C#代码中:

ISelenium selenium = new DefaultSelenium("127.0.0.1", 4444, "*iexplore", "http://www.google.com");
selenium.Start();
selenium.Open("/webhp");

selenium就相当于上文中的sessionId。

(4).在Selenium Server启动一个Session时,必须先指定一个 “源”(原因见《深入了解Selenium RC工作原理(2)》),在上面的代码中http://www.google.com就是“源”了,然而这是可能出现问题,请看下面代码:

ISelenium selenium = new DefaultSelenium("127.0.0.1", 4444, "*iexplore", "http://www.google.com");
selenium.Start();
selenium.Open(http://www.baidu.com);

我们在启动Session时,定义了源为http://www.google.com,但在后来的操作中,我们打开的却是http://www.baidu.com,由于二者非同源,所以接下来的操作就可能会出现各种问题,故此Selenium Server会给出以下警告:

Selenium Server提示说;如果测试案例是运行在*iehta或者*chrome上,或者改变Selenium Server的运行模式为proxy injection mode即可避免问题出现。

恩,在这里,我不得不承认之前在《深入了解Selenium RC工作原理(1)》中,为了简化问题,我故意少写了一些东西!

其实,Selenium Server其实有2种运行模式:

(1).Heightened Privileges Browsers

(2).Proxy Injection

现在Selenium Server启动的默认模式为:Heightened Privileges Browsers。如果要启动Proxy Injection模式,可以加参数“-proxyInjectionMode”。而之前在《深入了解Selenium RC工作原理(1)》中介绍Selenium RC与Testcase关系,其实就是在描述Proxy Injection的工作模式,因为我个人认为Proxy Injection设计模式更为合理,所以只对Proxy Injection模式作介绍。在这里我补充说明一下,为什么Heightened Privileges Browsers模式不能避免上面的问题。先看看Selenium Server在Heightened Privileges Browsers模式下的工作流程图:

和Proxy Injection模式不一样,在Heightened Privileges Browsers模式下,Browser对Web的请求没有经过Http Proxy,所以返回的Web页面就有可能和Selenium Core不同源了(一般的情况下,Open都应该只获取“源”下的某个子页面,用Open获取其他“源”的页面在测试中应该是极少数的,因为在这种情况下,我们还应该再new一个新的ISelenium selenium进行处理,虽然用Open获取其他“源”的页面出现的机会极少,但如果真的需要这样的话,也只能启动-proxyInjectionMode模式了,虽然这样的效率会低一些)。

Selenium私房菜系列8 -- 玩转Selenium Server相关推荐

  1. Selenium私房菜系列

    在这段期间,我一直在找关于服务器的端测试方案,自动化工具等等,无意间我发现了Selenium这个工具.在试用一段时间后,觉得Selenium确实是一个很不错的Web测试工具.在和强大的QTP比较后,我 ...

  2. Selenium实战教程系列(三)--- Selenium中的动作

    Selenium中针对元素进行的动作在代码中可以分为两类: Selenium::WebDriver::ActionBuilder类中的动作方法 Selenium::WebDriver::Element ...

  3. Oracle私房菜之安装Oracle 11g

    背景介绍:上一次写的私房菜系列,个人感觉很粗糙,因此痛定思痛,决定认真写好一个系列,也是对自己有个交代,从本篇开始,所有的实验,非特别介绍,系统平台均为OEL 5.7 x64版本,数据库软件版本为11 ...

  4. 鸟哥的Linux私房菜基础篇第三版 -- 目录

    服务器端使用的OS,Linux是最最常用的,所以,日常的部署.排查问题,就不可避免的与Linux打交道,日积月累,对Linux就有了多多少少的了解. 反过来,再系统的从头开始,读一本关于Linux基础 ...

  5. Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!

    导 语 好久没更新了,上来冒个泡吧.各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T): Selenium模拟登录系列 | B站滑块验证码破解 今天随手更新了一下Seleniu ...

  6. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

  7. python网络爬虫系列(七)——selenium的介绍 selenium定位获取标签对象并提取数据 selenium的其它使用方法

    一.selenium的介绍 知识点: 了解 selenium的工作原理 了解 selenium以及chromedriver的安装 掌握 标签对象click点击以及send_keys输入 1. sele ...

  8. python网络爬虫系列教程——Python+PhantomJS +Selenium组合应用

    全栈工程师开发手册 (作者:栾鹏) python教程全解 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器. 理 ...

  9. Linux教程系列 pdf下载(鸟哥私房菜等)

    鸟哥的Linux私房菜-基础篇.第四版.pdf 下载 LINUX内核设计与实现.pdf 下载 Linux_操作系统-基础操作-教学.doc 下载 linux内核深入剖析基于0.11.pdf 下载 Li ...

最新文章

  1. 老牌名校助理教授给出8个建议
  2. Python 列表 insert() 方法
  3. WINCE6.0操作系统---内核(kernel)学习
  4. mybatis简单案例源码详细【注释全面】——Utils层(MybatisUtils.java)
  5. Java 高级类(上) —— 抽象类和接口
  6. 纯CSS实现锚点跳转位置上下偏移的办法
  7. 人体反应测试仪 c语言,人体反应速度测试仪毕业设计说明
  8. javaweb中mysql数据库的回滚操作代码
  9. VS2017专业版使用最新版Qt5.9.2教程(转载)
  10. Linux应用编程基础04:Linux线程编程
  11. YaoLingJump开发者日志(四)
  12. Eclipse中Maven WEB工程tomcat调试
  13. ES+Redis+MySQL,这个高可用架构设计太顶了!
  14. Linux服务器异常关机,重启启动后weblogic无法启动
  15. cvCreateTrackbar() 添加滚动条调节参数
  16. MATLAB矩阵及其运算
  17. 苹果手表连接是什么原理_为什么苹果手表是最具潜力的苹果产品
  18. 前端职业规划-写给年轻的前端韭菜们
  19. 笔记本电脑怎么打不开计算机,笔记本电脑打不开了怎么办
  20. spring boot 整合kettle调用ktr与kjb文件

热门文章

  1. web前端从无到有html标签,.NET MVC 扩展 HtmlHelper 从无到有(一)
  2. acm括号配对问题c语言,ACM:UESTC - 649 括号配对问题 - stack
  3. 自定义浏览器css,CSS自定义浏览器滚动条样式
  4. html没有代码补全 vscode_借助clangd实现VSCode C++代码补全
  5. 大数据学习笔记03:安装配置CentOS7虚拟机
  6. VB讲课笔记07:控制结构
  7. 链表C++ | 实现头部、尾部插入数据_1
  8. 复数基础——复数的绝对值,复数的极坐标形式的直观解释练习_8
  9. 短网址还原 php,学习php简单实现短网址(短链)还原的方法
  10. 2017.3.30 寿司晚宴 失败总结