Skip to content

thiagodp/get-xpath

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

27 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

npm (tag) Build Status License npm

get-xpath

๐Ÿ“‘ Extract the XPath of an HTML element

  • Works with browsers, NodeJS and DenoJS (JavaScript 5 and TypeScript)
  • No external dependencies
  • Unit-tested
  • Semantic Versioning

Install

npm i get-xpath

API

function getXPath( element: HTMLElement, options?: Partial< Options > ): string;

Where options is an optional object containing:

name type description
ignoreId boolean Do not take elements' ID into account

Example:

<html>
    <body>
        <div id="x" ></div>
        <script>
            const div = document.getElementById( 'x' );
            const xpath1 = getXPath( div ); // returns '//*[@id="x"]'
            const xpath2 = getXPath( div, { ignoreId: true } ); // returns '/html/body/div'
        </script>
    </body>
</html>

Usage

Notes:

  • On Node or Deno, you have to provide a way to accessing or emulating the DOM. You can use JSDOM (or any other library) for that.
  • When using TypeScript, add the value "dom" to the property "lib"of your tsconfig.json. Otherwise you will probably get errors.

Browser

Global:

<script crossorigin src="https://unpkg.com/get-xpath" >
<script>
console.log(
    getXPath( document.getElementById( 'foo' ) )
);
</script>

ESM:

<script type="module" >
import getXPath from 'https://unpkg.com/get-xpath/index.esm.js';
console.log(
    getXPath( document.getElementById( 'foo' ) )
);
</script>

NodeJS

/// <reference lib="dom" />
const getXPath = require('get-xpath');
console.log(
    getXPath( document.getElementById( 'foo' ) )
);

Deno

/// <reference lib="dom" />
import getXPath from 'https://unpkg.com/get-xpath/index.esm.js';
console.log(
    getXPath( document.getElementById( 'foo' ) )
);

License

MIT ยฉ Thiago Delgado Pinto