webdriverio-workflo
Version:
This is a customized version of webdriverio for use with workflo framework.
62 lines (48 loc) • 2.22 kB
Markdown
name: browserevent
# category: plugins
tags: guide
title: WebdriverIO - Browserevent
---
Browserevent
============
This is an experimental feature that helps you to listen on events within the browser. It
is currently **only** supported in Chrome browser (other browser will eventually follow).
To register an event call the `addEventListener` command. If an event gets invoked it returns
almost the complete event object that got caught within the browser. Only the `Window` attribute
will be removed to avoid circular references. All objects from type `HTMLElement` will be
replaced by their xPath. This will help you to query and identify this element with WebdriverIO.
## Install
First install this plugin via NPM by executing
```sh
$ npm install browserevent
```
Then just require the module and enhance your client object.
```js
var client = require('webdriverio').remote({ desiredCapabilities: { browserName: 'chrome' } }),
browserevent = require('browserevent');
// by passing the client object as argument the module enhances it with
// the `addEventListener` and `removeEventListener` command
browserevent.init(client);
```
## Usage
After that you can use `addEventListener` to register events on one or multiple elements
and `removeEventListener` to remove them.
**Example**
```js
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();
```
**Note:** this is still an experimental feature. Some events like `hover` will not be recorded
by the browser. But events like `click`, `doubleClick` or custom events are working flawlessly.
You can also use this feature in cloud environments like [Sauce Labs](https://saucelabs.com)
when using a secured tunnel that proxies the port `5555`. But be aware of possible delays due
to slow connections between client and cloud server. Your click listener could outlast some
selenium requests until it gets fired. I haven't faced this problem if the standalone server
runs on my local machine.