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
1
| $ npm install browserevent
|
Then just require the module and enhance your client object.
1 2 3 4 5 6
| var client = require('webdriverio').remote({ desiredCapabilities: { browserName: 'chrome' } }), browserevent = require('browserevent');
browserevent.init(client);
|
Usage
After that you can use addEventListener to register events on one or multiple elements
and removeEventListener to remove them.
Example
1 2 3 4 5 6 7 8 9
| client .url('http://google.com') .addEventListener('dblclick','#hplogo', function(e) { console.log(e.target); console.log(e.type); console.log(e.clientX, e.clientY); }) .doubleClick('#hplogo') .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
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.