Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mchalapuk/wson-dom-connector

Serialize DOM nodes with WSON.
https://github.com/mchalapuk/wson-dom-connector

dom serialization wson xpath

Last synced: about 2 months ago
JSON representation

Serialize DOM nodes with WSON.

Awesome Lists containing this project

README

        

[travis-url]: http://travis-ci.org/mchalapuk/wson-dom-connector
[travis-image]: https://api.travis-ci.org/mchalapuk/wson-dom-connector.svg

[david-url]: https://david-dm.org/mchalapuk/wson-dom-connector
[david-image]: https://david-dm.org/mchalapuk/wson-dom-connector.svg

[david-url-dev]: https://david-dm.org/mchalapuk/wson-dom-connector?type=dev
[david-image-dev]: https://david-dm.org/mchalapuk/wson-dom-connector/dev-status.svg

[npm-url]: https://npmjs.org/package/wson-dom-connector
[npm-image]: https://badge.fury.io/js/wson-dom-connector.svg

# wson-dom-connector

[![Build Status][travis-image]][travis-url]
[![Dependency Status][david-image]][david-url]
[![devDependency Status][david-image-dev]][david-url-dev]
[![NPM version][npm-image]][npm-url]

[WSON][wson] is a human-readable data-interchange format with support for cyclic
structures. This module is an extension to wson that enables serializing
[DOM][dom] nodes to their [xpaths][xpath] and parsing those xpaths back to DOM
nodes.

[wson]: https://github.com/tapirdata/wson
[dom]: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
[xpath]: https://www.w3.org/TR/xpath/

**Possible Use Cases**

1. Store references to DOM elements between page reloads,
2. Record DOM events to later simulate a user during automated test
(needs [`wson-event-connector`][wson-event-connector]).

[wson-event-connector]: https://github.com/mchalapuk/wson-event-connector

## Installation

```shell
npm install --save wson wson-dom-connector
```

## Usage

wson-dom-conector can be used in a web browser via [browserify][browserify]...

[browserify]: https://github.com/substack/node-browserify

```javascript
var WSON = require("wson").Wson;
var domConnectors = require("wson-dom-connector");

var wson = new WSON({
connectors: domConnectors(window)
});

console.log(wson.stringify(document.body));
// [:HTMLBodyElement|/body`a1`e]
```

...or in [node][node] with any standard-compliant DOM implementation
(e.g. [jsdom][jsdom]).

[node]: https://nodejs.org/en/
[jsdom]: https://github.com/tmpvar/jsdom

```javascript
var WSON = require("wson").Wson;
var domConnectors = require("wson-dom-connector");
var jsdom = require("jsdom");

var document = jsdom.jsdom("")

var wson = new WSON({
connectors: domConnectors(document.defaultView)
});

console.log(wson.stringify(document.body));
// [:HTMLBodyElement|/body`a1`e]
```

## API
Please refer to [wson's documentation][wson] for further details.

## License

Copyright © 2016 - 2019 Maciej Chałapuk.
Released under [MIT license](LICENSE).