介绍
Selenium根据webdriver规范实现了Java、Python、Ruby、NodeJS等语言的客户端。那么原理是什么呢?
之所以能够通过写代码来实现操作浏览器,其实很简单,基本上任何语言都可以实现这样的效果——如果它能够发送网络请求的话。因为,webdriver给出的是restFul接口,通过该接口来发送请求就可以操作浏览器。
页面加载策略:none、normal、eager。
下面介绍webdriver的webapi:
- 新建会话
POST /session
参数示例:
- 关闭会话
DELETE /session/{sessionId}
- 获取超时时间
GET /session/{sessionId}/timeouts
- 地址导航
POST /session/{sessionId}/url
参数示例:
- 获取地址
GET /session/{sessionId}/url
响应示例:
{"sessionId":"b908f2957455781d9a3df0b3e6e773dd","status":0,"value":"http://surenpi.com/"}
- 回退
POST /session/{sessionId}/back
- 向前
POST /session/{sessionId}/forward
- 刷新
POST /session/{sessionId}/refresh
- 获取标题(title)
GET /session/{sessionId}/title
- 查找单个元素
POST /session/{sessionId}/element
- 查找多个元素
POST /session/{sessionId}/elements
- 查找单个子元素
POST /session/{sessionId}/element/{elementId}/element
- 查找多个子元素
POST /session/{sessionId}/element/{elementId}/elements
- 判断元素是否被选中
GET /session/{sessionId}/element/{elementId}/selected
响应示例:
{"sessionId":"a98cca901dd73913b9e1ef244de9d69b","status":0,"value":false}
- 获取元素属性(Attribute)
GET /session/{sessionId}/element/{elementId}/attribute/{name}
响应示例:
{"sessionId":"9cf06f37ff37033b5fcefa5ea3060194","status":0,"value":"content-sidebar widget-area"}
- 获取元素属性(Property)
GET /session/{sessionId}/element/{elementId}/property/{name}
- 获取元素的CSS值
GET /session/{sessionId}/element/{elementId}/css/{name}
响应示例:
{"sessionId":"690e0cf036990892eca8babfc341087a","status":0,"value":"303.984px"}
- 获取元素的文本(Text)
GET /session/{sessionId}/element/{elementId}/text
- 获取元素的名称(TagName)
GET /session/{sessionId}/element/{elementId}/name
- 获取元素区域
GET /session/{sessionId}/element/{elementId}/rect
- 判断元素是否可用
GET /session/{sessionId}/element/{elementId}/enabled
响应示例:
{"sessionId":"a98cca901dd73913b9e1ef244de9d69b","status":0,"value":true}
- 点击元素
POST /session/{sessionId}/element/{elementId}/click
- 清空元素
POST /session/{sessionId}/element/{elementId}/clear
- 键盘事件
POST /session/{sessionId}/element/{elementId}/value
- 获取页面源码
GET /session/{sessionId}/source
- 阻塞方式执行脚本(javascript)
POST /session/{sessionId}/execute/sync
- 异步方式执行脚本(javascript)
POST /session/{sessionId}/execute/async
- 获取所有的cookie
GET /session/{sessionId}/cookie
响应示例:
{ "sessionId": "2114691d5c438e0f2e18d85c6a083532", "status": 0, "value": [ { "domain": ".surenpi.com", "expiry": 1533169490, "httpOnly": false, "name": "Hm_lvt_438444f54ac50def53da9410cb022c57", "path": "/", "secure": false, "value": "1501633490" } ] }
- 获取cookie的指定值
GET /session/{sessionId}/cookie/{name}
- 增加cookie
POST /session/{sessionId}/cookie
- 删除cookie
DELETE /session/{sessionId}/cookie/{name}
- 删除所有cookie
DELETE /session/{sessionId}/cookie
- 执行动作
POST /session/{sessionId}/actions
- 清除动作
DELETE /session/{sessionId}/actions
- 取消弹出框
POST /session/{sessionId/alert/dismiss
- 确认弹出框
POST /session/{sessionId/alert/accept
- 获取弹出框文本
GET /session/{sessionId/alert/text
- 设置弹出框文本
POST /session/{sessionId/alert/text
- 截屏
GET /session/{sessionId}/screenshot
- 元素截屏
GET /session/{sessionId}/element/{elementId}/screenshot
参考
https://w3c.github.io/webdriver/webdriver-spec.html#refresh 本文为原创,如果您当前访问的域名不是surenpi.com,请访问“素人派”。
查看原文:http://surenpi.com/2017/08/02/webdriver-spec/