selenium1的原理就是使用js来驱动浏览器,因为现在基本不用,所以不做过多讨论,下面是我整理的webdriver的工作原理,大致就是通过命令请求webdriver,然后webdriver通过浏览器的api去做操作,并返回响应结果。用的协议是json  wire protocol,下面简单画了个流程图,不一定准确,只是个人理解。详细的可以参考官方W3C介绍:https://www.w3.org/TR/2016/WD-webdriver-20160120/

下面我看下webdriver和浏览器的信息交互:

1.启动cmd,进入chromedriver.exe所在目录,输入

java -Dwebdriver.chrome.driver="chromedriver.exe" -jar D:\seleniumjar\mycorejar\selenium\selenium-server-standalone-2.47.1.jar

2.看到提示以下信息则说明启动成功。

3.启动后,开始编写测试代码

    public static void testChrome() {DesiredCapabilities aDesiredcap = DesiredCapabilities.chrome();  //aDesiredcap.setBrowserName("chrome");aDesiredcap.setPlatform(Platform.WINDOWS);WebDriver dr;try {dr = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), aDesiredcap);dr.get("http://www.baidu.com");dr.findElement(By.id("kw")).sendKeys("qiaoyeye");Thread.sleep(3000);dr.quit();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }

4.运行后,控制台打印的信息如下

由此可见,代码的一个请求命令,webdriver都会封装一个executing,发送过去,发送成功后,再返回一个done表示处理成功。如果发生了异常,如找不到页面元素,则会在执行时抛异常

如果上面的看着还不够透彻,下面我们直接用webdriver的协议提供给我们的接口去操作。

1.首先在浏览器输入http://localhost:4444/wd/hub,通过以下方式拿到sessionid:fc6f9497-330f-4d6c-abe0-bd0587e57101

2.拿到session后,就可以请求拉,首先我们用接口访问个百度,接口地址:http://localhost:4444/wd/hub/session/5c81a944-55c6-4c2a-9e01-689bc43d335d/url,请求json内容:{"url": "http://www.baidu.com/"}。post后见下图

3.查找百度搜索的输入框。使用接口/session/{session id}/element,post请求,json内容:

{
"using": "id",
"value": "kw"
}

4.查找到后,我们要往输入框输入内容,调用接口:/session/{session id}/element/{element id}/value,post请求,json内容:

{
"value": [
"qiaoyeye"
]
}

注意:element id是第三步中的响应结果json中的{"ELEMENT":"0"}0值

贴一个响应内容:

{"sessionId":"5c81a944-55c6-4c2a-9e01-689bc43d335d","status":0,"state":"success","value":{"ELEMENT":"2"},"class":"org.openqa.selenium.remote.Response","hCode":1713842970}

******************************************************************************************************************************************
作者:乔叶叶
博客地址:http://www.cnblogs.com/qiaoyeye/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
******************************************************************************************************************************************

最简单的解释 webdriver的工作原理相关推荐

  1. Selenium WebDriver的工作原理

    先通过一个简单的类比说个好理解的,这个比喻是我从美版知乎Quora上看到的,觉得比较形象.好理解拿来用用. 我们可以把WebDriver驱动浏览器类比成出租车司机开出租车. 在开出租车时有三个角色: ...

  2. tomcat处理html流程,Tomcat 简单配置使用,基本工作原理(流程图)

    Tomcat 简单配置使用,基本工作原理 安装 Tomcat 之前,首先要安装 JDK. 常见 Tomcat 启动异常 1.JAVA_HOME 环境变量配置错误 2.默认8080端口被占用 启动 安装 ...

  3. 简单的描述电荷泵的工作原理

    简单的描述电荷泵的工作原理 电荷泵工作原理 电荷泵工作原理 电荷泵的工作原理:主要是利用电容两端电压不能突变的特性,将输出电压给抬高.如下是一个电容式电荷泵内部结构图: 从图中可以看出,C+引脚和C- ...

  4. 简单介绍LC振荡电路的工作原理及特点

    简单介绍LC振荡电路的工作原理及特点 LC振荡电路,顾名思义就是用电感L和电容C组成的一个选频网络的振荡电路,这个振荡电路用来产生一种高频正弦波信号.常见的LC振荡电路有好多种,比如变压器反馈式.电感 ...

  5. [硬件] 简单介绍磁盘结构及工作原理

    一.前言 最近学习DOS下的汇编语言用到了很多与硬件相关的指令,比如上一期写的int 13h(直接磁盘服务),其中接口参数中就有驱动器号,磁头,磁道,扇区的概念,对于一个计算机组成原理丢了一年的人来说 ...

  6. 万物的解释 —— 微波炉的工作原理

    微波炉(microwave oven):利用微波照射引起水分子的内部振动,使之产生热量. 微波炉的工作原理 微波炉是利用食物在微波场中吸收微波能量而使自身加热的烹饪器具.在微波炉微波发生器产生的微波在 ...

  7. 简单了解一下LCD屏工作原理

    谈及LCD屏,想必绝大多数人都耳熟能详,现实中运用到LCD屏的地方还是有很多的.例如家用电视显示屏,电子秤显示屏,手机显示屏等. 知道LCD屏这个名词的人居多,但是真正了解其工作原理的,应该还不是很多 ...

  8. 简单解析手机充电器的工作原理

    刚好前段时间拆了两个充电器,看下里面的电路就明白了.鉴于网络上不明真相出来误导人的特别多,很多网站竟然还有文章说手机充电器里没有变压器隔离的.因此简单说下手机充电器的工作原理. 图1: 开关式手机充电 ...

  9. 简单叙述tcp/ip的工作原理和主要的协议_802.11协议精读3:CSMA/CD与CSMA/CA

    序言 在前一份文档中,我们详细记录了有关802.11中DCF模式以及其核心CSMA/CA的一些内容与细节.对比无线网络,有线网络的集线器和中继器设计中,采用了CSMA/CD技术.该技术早期是用来解决有 ...

  10. 测试开发面试准备之Selenium 工作原理

    Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,本文仅介绍Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2 ...

最新文章

  1. PCL采样一致性算法
  2. 网站收录慢的如“蜗牛”,是什么原因导致的?
  3. iOS NSOperation 非并发执行
  4. ADSL之PPPOE
  5. 如何根据接口写一个客户端进行发单测试?
  6. 酒驾、超速、加塞、路怒、拒载?来吧,我们专治各种不服
  7. Android Webview实现有道电子词典
  8. 如何优雅的统计代码耗时,快速知道你的程序慢在哪里!
  9. Python自动化运维开发----基础(八)字符串
  10. 10115 - Automatic Editing
  11. element tree不刷新视图_安卓从入门到进阶第五章(视图查看)
  12. css文章排版代码,css文章排版
  13. HTML5期末大作业:爱宠之家网站设计——蓝色版爱宠之家(5页) 致热爱动物网页设计作品 大学生爱宠专题网页设计作业模板 动物静态HTML网页模板下载
  14. 华为普工一个月的工资是多少?
  15. 频繁用电脑打字 武汉大三女生求职提笔忘字
  16. 钉钉分享唤起三方app
  17. ansible-playbook部署K8S高可用集群
  18. 生成特定分贝的音频波形
  19. 定期存款可以提前取出来吗_定期存款可以提前取吗 定期存款没到期怎么取出来?...
  20. 新浪微博密谋上市 估值缺好故事

热门文章

  1. eclipse下改变 匹配标签和匹配括号的颜色
  2. SQLserver With As 用法
  3. netlimiter 4 功能使用TCP UDP上行下行流量监控
  4. 共享的计算机用户账户限制,win10系统使用共享功能被提示用户账户限制的方案...
  5. HEX编码、Base64编码
  6. python arp断网攻击_局域网arp断网攻击
  7. oracle 9i告警日志,Oracle 9i,10g,11g各自alert日志的位置
  8. java:调节图片透明度(支持透明背景)
  9. javascript基础常识问答(三)
  10. (二)大话深度学习编译器中的自动调优·DSL与IR