WebDriver 协议
JSON wire protocol 协议
JSON wire protocol 仅供参考,以 WebDriver 文档为准。 此支持库会优先使用系统自带的 Edge(Chromium)浏览器。
不同版本浏览器需要下载不同版本的 chromedriver.exe (Edge 则为 msedgedriver.exe)。 如果 chrome.exe 所在目录已经存在 chromedriver.exe 则直接使用该路径。
否则 aardio 会自动检测并下载匹配版本的 msedgedriver.exe。 aardio 不会对 msedgedriver 或chromedriver 下载地址失效、变动导致的后果承担任何责任,如不同意请不要使用。 Win7,XP 等旧系统建议手动安装兼容新 Chromium 内核的 Supermium 浏览器(安装时不要修改安装路径)。
说明
创建并返回 ChromeDriver 对象,失败返回 null,错误信息。
参数@1如果不指定 Chrome 或 Edge 路径,aardio会自动获取浏览器路径。
aardio会自动搜索浏览器同目录下的适合的 ****driver.exe,
如果指不到会自动获到浏览器的版本并自动下载对应版本的的 chromedriver.exe 或 edgedriver.exe。
n可选使用参数 @3 自定义下载对话框标题
创建并返回 ChromeDriver 对象,失败返回 null,错误信息。
如果不指定参数 @browserPath,则只能通过远程调试端口直接连接
创建并返回 ChromeDriver 对象,失败返回 null,错误信息。
如果不指定参数@1,则只能通过远程调试端口直接连接,
参数 @driverVersion 必须使用一个字符串或一个数值指定 Chrome 或 Edge 的主版本号
创建并返回 ChromeDriver 对象,失败返回 null,错误信息。
优先获取 Chrome 路径,如果找不到则获取 Edge 路径。
如果参数 @1 不指定路径且不为 true ,则优先获取 Edge 路径。
aardio会自动搜索浏览器同目录下的适合的 ****driver.exe,
如果指不到会自动获到浏览器的版本并自动下载对应版本的的 chromedriver.exe 或 edgedriver.exe。
n可选使用参数 @3 自定义下载对话框标题
用于调用 ChromeDriver 或 EdgeDriver 自动化控制内核浏览器 。
兼容 Chrome ,Edge ,Supermium 等 Chromium 内核浏览器。
aardio会自动搜索浏览器同目录下的适合的 ****driver.exe,
如果指不到会自动获到浏览器的版本并自动下载对应版本的的 chromedriver.exe 或 edgedriver.exe。
aardio 不会对 ChromeDriver 下载地址失效、变动导致的后果承担任何责任,如不同意请不要使用。
版本号不兼容的其他浏览器请自行指定 chromedriver.exe 路径
创建并返回 ChromeDriver 对象,失败返回 null,错误信息。
这是一个表,
表的键值定义了可用于 sendKeys 函数的键名与键值。
键名与标准库 key,key.VK 基本兼容,但键值是不同的
Chrome.exe 或浏览器主程序路径
chromedriver.exe 或 msedgedriver.exe 路径
参数@1使用字符串传入Chrome版本号,
返回匹配的ChromeDriver路径
如果未安装该版本ChromeDriver会自动下载安装
可选使用参数@2自定义下载对话框标题
可输入任意资源名
对象负责转换为资源请求URL
标签属性集合。
使用下标或成员操作符指定属性名,例如:
attribute["属性名"].get() 返回对象的 value 字段为属性值
清空节点
模拟点击
DELETE方法提交请求,删除资源
调用时可以写 delete() 或 delete.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
GET方法提交请求,获取资源
调用时可以写 get() 或 get.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
返回 HTML 标签属性值,成功返回字符串值,否则为 null 值
返回 name 属性值
返回节点属性值
返回一个表示节点区块位置的 ::RECT 结构体
返回一个表示节点大小的 ::SIZE 结构体
返回 CSS 样式指定属性值,参数 @1 指定属性名
返回文本值
HEAD方法提交请求
如果该函数返回非null值为成功,请使用lastResponseHeaders获取应答HTTP头
调用时可以写 head() 或 head.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
获取节点文本
节点是否显示
节点是否启用
节点是否选中
PATCH方法提交请求,更新资源
调用时可以写 patch() 或 patch.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
POST方法提交请求,新增或修改资源
调用时可以写 post() 或 post.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
属性集合。
使用下标或成员操作符指定属性名,例如:
attribute["属性名"].get() 返回对象的 value 字段为属性值
PUT方法提交请求,替换或更新资源
调用时可以写 put() 或 put.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
chromeDriverEleObject.query(["partial link text"]="链接文本"/*使用指定键值对查询网页元素,不指定参数获取当前活动元素*/)
chromeDriverEleObject.query(["partial link text"]="链接文本"/*使用指定键值对查询并返回网页元素数组*/)
指定CSS选择器并返回节点对象
HTTP接口:POST /session/{session id}/element/{element id}/element
指定CSS选择器并返回节点对象数组
HTTP接口:POST /session/{session id}/element/{element id}/elements
在该节点发送按键。
参数可指定一个或多个键名,也要吧用一个字符串数组指定一个或多个键名。
可用键名为 chrome.driver.KEYS 定义的键名。
其他字符串直接发送
使用一个或多个字符串参数指定要发送的文本。
如果要发送 chrome.driver.KEYS 定义的按键,必须指定对应键名的键值。
改用 sendKeys 函数可在参数中指定键名
等待并返回指定 CSS 选择器匹配的节点对象。
可选用参数 @2 指定超时(毫秒),可选用参数 @3 指定检测间隔(毫秒)。
HTTP接口:POST /session/{session id}/element
获取attribute值
HTTP接口:GET /session/{session id}/element/{element id}/attribute/{name}
获取property值
HTTP接口:GET /session/{session id}/element/{element id}/attribute/{name}
截屏
HTTP接口:GET /session/{session id}/element/{element id}/screenshot
是否选中
HTTP接口:GET /session/{session id}/element/{element id}/selected
添加一个或多个Chrome启动参数,
参数也可以是一个包含多个启动参数的数组
注意参数中不必要使用引号,多个参数应分开写不要拼接成一个参数
每个启动参数都是使用两个横杠开始的字符串
chrome启动参数大全
附加到debuggerPort指定的调试端口,返回该会话的REST API对象,
如果创建chrome.driver的第一个参数是electron.app或chrome.app,debuggerPort参数可以不指定
其他参数可选
浏览器程序路径
WebDriver API
web.rest.jsonClient客户端对象
WebDriver API
关闭ChromeDriver服务端,
程序退出前也会自动关闭ChromeDriver服务端
打开Chrome并创建会话,返回会话信息,
startBrowser会自动调用此函数,参数用法参考startBrowser
指定Chrome远程调试地址,
格式为 IP或主机:端口号,例如 127.0.0.1:38947
Chrome Driver将直接附加到该浏览器实例
指定Chrome远程调试端口
Chrome Driver将直接附加到该浏览器实例
****driver.exe 程序路径
返回浏览器创建会话的desiredCap默认参数
可选在参数中自定义部分字段
启动参数是否指定了 --headless
返回最后一次请求的URL
返回最后一次响应的内容
排除一个或多个Chrome启动参数,
参数也可以是一个包含多个启动参数的数组
服务端进程,process.poen 对象
设置Chrome启动选项,参数应当是键值对组成的表
ChromeDriver选项文档
chromeDriverObject.setProxy(
proxyType = "manual";
httpProxy = "127.0.0.1:12043"
)
打开 Chrome 并创建 APP 模式会话,返回该会话的 REST API对象
打开Chrome并创建APP模式会话,返回该会话的REST API对象
app应当是一个chrome.app对象,args是包含chrome启动参数的数组
其他参数为可选参数
打开Chrome并创建APP模式会话,返回该会话的REST API对象
url指定要打开的网址,其他参数为可选参数
打开Chrome并创建会话,返回该会话的REST API对象
打开Chrome并创建会话,返回该会话的REST API对象,
参数可选,aardio自动添加必要的默认参数,
参数用法参考文档
Chrome选项文档
启动ChromeDriver服务端
启动ChromeDriver服务端,所有参数可选,
不指定端口时自动分配空闲端口,不会与其他程序冲突
如果指定参数@2会作为process.popen的附加启动参数,
返回process.popen对象
可输入任意资源名
对象负责转换为资源请求URL
执行动作
HTTP接口:POST /session/{session id}/actions
后退
HTTP接口:POST /session/{session id}/back
执行 CDP 命令。
调用成功则第一个返回值为 CDP 返回的表对象。
调用失败则第二个返回值为错误信息。
注意 CDP 调用成功不等于命令执行成功,
即使调用成功且第一个返回值为表对象,
该返回值仍解码器能包含错误状态码与错误信息。
返回表对象的字段含义请参考 CDP 文档。
HTTP接口:POST /session/{session id}/goog|ms/cdp/execute
关闭当前会话的当前活动浏览器窗口(输入焦点所在窗口)
关闭会话创建的所有浏览器窗口
修改cookie
HTTP接口:POST /session/{session id}/cookie
DELETE方法提交请求,删除资源
调用时可以写 delete() 或 delete.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
删除会话
DELETE /session/{session id}
执行脚本
HTTP接口:POST /session/{session id}/execute/sync
JS脚本会被放到一个匿名函数中执行,
可添加任意个调用参数,节点对象可作为参数
成功返回该匿名函数的返回值,
失败返回null,以及REST API返回的响应对象
for( index,window,title,url in chromeDriverSesObject.eachWindow() ){
/*遍历所有窗口,已自动切换焦点到当前遍历的窗口*/
}
查找并等待出现网页窗口标题并切换到该窗口,
参数指定窗口标题,支持模式匹配语法,成功返回 true
使用网址查找网页窗口并切换到该窗口,
参数指定网址,支持模式匹配语法,成功返回true
前进
HTTP接口:POST /session/{session id}/forward
切换框架
HTTP接口:POST /session/{session id}/frame
GET方法提交请求,获取资源
调用时可以写 get() 或 get.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
获取当前网页窗口标题,成功返回字符串
获取当前URL,成功返回字符串
获取当前网页窗口句柄标识,成功返回字符串
打开指定网址
HTTP接口:GET /session/{session id}/url
HEAD方法提交请求
如果该函数返回非null值为成功,请使用lastResponseHeaders获取应答HTTP头
调用时可以写 head() 或 head.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
启动参数是否指定了 --headless
加载JS脚本文件
参数指定JS文件网址
此函数发送请求后立即返回,不会等待脚本加载完成
chromeDriverSesObject.notify(
function(){
/*此函数中执行的请求不阻塞,并且忽略返回值*/
}
)
PATCH方法提交请求,更新资源
调用时可以写 patch() 或 patch.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
POST方法提交请求,新增或修改资源
调用时可以写 post() 或 post.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
PUT方法提交请求,替换或更新资源
调用时可以写 put() 或 put.其他资源名()
请求参数可以指定表或字符串,如果是表请求前会转换为字符串
chromeDriverSesObject.query(["partial link text"]="链接文本"/*使用指定键值对查询网页元素,不指定参数获取当前活动元素*/)
chromeDriverSesObject.query(["partial link text"]="链接文本"/*使用指定键值对查询并返回网页元素数组*/)
指定CSS选择器并返回节点对象
HTTP接口:POST /session/{session id}/element
指定CSS选择器并返回节点对象数组
HTTP接口:POST /session/{session id}/elements
前进
HTTP接口:POST /session/{session id}/refresh
在活动节点发送按键。
参数可指定一个或多个键名,也要吧用一个字符串数组指定一个或多个键名。
可用键名为 chrome.driver.KEYS 定义的键名。
其他字符串直接发送
浏览器会话信息
切换窗口,
参数@1可用字符串指定窗口句柄标识,
也可以用数值参数指定窗口索引。
成功返回 true
设置超时
HTTP接口:POST /session/{session id}/timeouts
等待并返回指定 CSS 选择器匹配的节点对象。
可选用参数 @2 指定超时(毫秒),可选用参数 @3 指定检测间隔(毫秒)。
HTTP接口:POST /session/{session id}/element
等待指定标题的网页窗口并切换到该窗口。
参数 @1 指定窗口标题,支持模式匹配语法。
可选用参数 @2 指定超时(毫秒),可选用参数 @3 指定检测间隔(毫秒)。
成功返回true
等待指定网址的网页窗口并切换到该窗口。
参数 @1 指定网址,支持模式匹配语法。
可选用参数 @2 指定超时(毫秒),可选用参数 @3 指定检测间隔(毫秒)。
成功返回true
等待参数@1指定的网址打开,支持模式匹配。
参数 @1 的等待规则与 waitUrl 函数相同。
参数 @2 指定要等待的 URL 参数名,
如果找到该参数则返回参数值,否则继续等待到参数出现或社会窗口关闭
切换窗口
HTTP接口:POST /session/{session id}/window
删除动作
DELETE /session/{session id}/actions
取消alert
HTTP接口:POST /session/{session id}/alert/accept
取消alert
HTTP接口:POST /session/{session id}/alert/dismiss
发送alert文本
HTTP接口:POST /session/{session id}/alert/text
获取alert文本
HTTP接口:GET /session/{session id}/alert/text
浏览器自定义命令接口。
Edge 浏览器为 /session/{session id}/ms ,
Chrome 浏览器为 /session/{session id}/goog
浏览器名称,Edge 浏览器为 "MicrosoftEdge" 或 "chrome"
用户数据目录
浏览器版本
修改用于仿真的网络条件
session/:session_id/chromium/network_conditions
获取用于仿真的网络条件
session/:session_id/chromium/network_conditions
删除cookie,
也可以写为cookie.name.delete删除指定名字cookie
DELETE /session/{session id}/cookie/{name}
获取cookie,也可以写为cookie.name.get
HTTP接口:GET /session/{session id}/cookie
异步执行脚本
HTTP接口POST /session/{session id}/execute/async
切换到父框架
HTTP接口:POST /session/{session id}/frame/parent
截屏
HTTP接口:GET /session/{session id}/screenshot
返回日志,
使用一个表参数并在types字段里指定要获取的日志类型
返回可用日志类型
获取页面源码
HTTP接口:GET /session/{session id}/source
获取页面源码
HTTP接口:GET /session/{session id}/source
获取当前状态
HTTP接口:GET /status
获取超时
HTTP接口:GET /session/{session id}/timeouts
获取标题
HTTP接口:GET /session/{session id}/title
获取当前URL
HTTP接口:GET /session/{session id}/url
关闭当前窗口
DELETE /session/{session id}/window
获取当前窗口
HTTP接口:GET /session/{session id}/window
最大化
HTTP接口:POST /session/{session id}/window/maximize
最小化
HTTP接口:POST /session/{session id}/window/minimize
前进\POST /session/{session id}/window/rect
获取所有窗口句柄
HTTP接口:GET /session/{session id}/window/handles
获取窗口位置
HTTP接口:GET /session/{session id}/window/rect