捕获 Selenium Web 驱动程序 Json-wire HTTP 交互
Capturing Selenium Web-driver Json-wire HTTP interactions
Selenium Webdriver 通过 HTTP 与任何浏览器交互,如所讨论的 - here。
我在 JavaScript 中通过 Protractor 框架使用 selenium 编写了一些自动化测试。
我的用例是我想要一种干净的方式来记录源自我的基于 JS 的测试用例与浏览器的所有交互,包括 - 用户操作模拟和源自测试用例的任何 DOM 询问。
记录这些互动的最简单方法是什么?
Protractor 是 Webdriverjs
, so you should be able to use addEventListener
command to add any browser supported events 的包装器,它将涵盖大多数用户操作和 DOM 询问
请注意,目前仅 chrome
支持此功能
此外,这是 webdriver.js 中的一项实验性功能,因此必须添加
var client = WebdriverJS.remote({
logLevel: 'verbose',
experimental: true, // <-- enables browser side eventhandling
desiredCapabilities: {
browserName: 'chrome'
}
});
然后注册事件如
client
.url('http://google.com')
.addEventListener('dblclick','#hplogo', function(e) {
console.log(e.target); // -> 'id("hplogo")'
console.log(e.type); // -> 'dblclick'
console.log(e.clientX, e.clientY); // -> 239 524
})
.doubleClick('#hplogo') // triggers event
.end();
您可以使用 removeEventListener
取消注册任何已注册的侦听器
Node.js 环境中的均匀处理也受此
暗示的支持
WebdriverJS inherits several function from the NodeJS EventEmitter object
如果您还想捕获网络流量,可以使用 browsermob-proxy
Here 是关于 browsermob-proxy 的教程
由于交互是通过 HTTP 进行的,因此我能够使用 - httflow 库捕获 HTTP 调用。
收到 HTTP 调用后,我清理了 HTTP 转储以删除不相关的调用,然后通过定义自定义映射将 Protractor 代码区域映射到调用。
Selenium Webdriver 通过 HTTP 与任何浏览器交互,如所讨论的 - here。 我在 JavaScript 中通过 Protractor 框架使用 selenium 编写了一些自动化测试。
我的用例是我想要一种干净的方式来记录源自我的基于 JS 的测试用例与浏览器的所有交互,包括 - 用户操作模拟和源自测试用例的任何 DOM 询问。
记录这些互动的最简单方法是什么?
Protractor 是 Webdriverjs
, so you should be able to use addEventListener
command to add any browser supported events 的包装器,它将涵盖大多数用户操作和 DOM 询问
请注意,目前仅 chrome
支持此功能此外,这是 webdriver.js 中的一项实验性功能,因此必须添加
var client = WebdriverJS.remote({
logLevel: 'verbose',
experimental: true, // <-- enables browser side eventhandling
desiredCapabilities: {
browserName: 'chrome'
}
});
然后注册事件如
client
.url('http://google.com')
.addEventListener('dblclick','#hplogo', function(e) {
console.log(e.target); // -> 'id("hplogo")'
console.log(e.type); // -> 'dblclick'
console.log(e.clientX, e.clientY); // -> 239 524
})
.doubleClick('#hplogo') // triggers event
.end();
您可以使用 removeEventListener
取消注册任何已注册的侦听器
Node.js 环境中的均匀处理也受此
暗示的支持WebdriverJS inherits several function from the NodeJS EventEmitter object
如果您还想捕获网络流量,可以使用 browsermob-proxy
Here 是关于 browsermob-proxy 的教程
由于交互是通过 HTTP 进行的,因此我能够使用 - httflow 库捕获 HTTP 调用。 收到 HTTP 调用后,我清理了 HTTP 转储以删除不相关的调用,然后通过定义自定义映射将 Protractor 代码区域映射到调用。