最简单的解释 webdriver的工作原理
来源:互联网 发布:机器人焊接软件 编辑:程序博客网 时间:2024/06/08 17:51
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 block e.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的工作原理
- WebDriver的工作原理
- webdriver工作原理-体验webdriver发送http的过程
- 计算机是如何工作的(最简单透彻的解释)
- 计算机是如何工作的(最简单透彻的解释)
- 卷积神经网络工作原理直观的解释
- 卷积神经网络工作原理直观的解释
- 卷积神经网络工作原理直观的解释
- 卷积神经网络工作原理直观的解释?
- 卷积神经网络工作原理直观的解释?
- 卷积神经网络工作原理直观的解释?
- WebDriver的简单使用
- 审计的最简单直白的解释
- 线程池的最简单的解释
- Selenium WebDriver 工作原理
- struts的简单工作原理
- tomcat简单的工作原理
- MVC简单的工作原理
- tablayout用法
- Java语言基础学习笔记(四)
- 实现夜间模式
- 初学acmer--c++的泛型库(一)向量
- recyclerview头布局独占一行
- 最简单的解释 webdriver的工作原理
- leetcode 283. Move Zeroes(C语言)
- Xcode代码块转移备份同步(CodeSnippets)代码块路径
- TabLayout
- struts2的配置
- Java读取txt文件和写入txt文件
- 线性回归
- javaScript的事件集合大全
- C++模板