That's a good idea for a KM feature request. @peternlewis
For now, you can use this simple JavaScript in Browser Script:
(function myMain () {
'use strict';
var ptyScriptName = "Get URL (href) Identified by XPath"
var ptyScriptVer = "2.0"
var ptyScriptDate = "2018-05-27"
var ptyScriptAuthor = "@JMichaelTX"
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PURPOSE: Click on the Hyperlink Identified by the XPath provided by KM
RETURNS: One of these, as text:
• URL of xPath Element -- if successful, no errors
• "[ERROR]" at start of results if a script error occurred.
KM VARIABALES REQUIRED:
• xPath -- the full XPath to the Link
EXAMPLE XPATH:
//td[@class='category']//a
KM VARIABLES SET:
• NONE
REF:
• [Introduction to using XPath in JavaScript](https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
//--- GET THE XPATH FROM KM ---
var xPathStr = document.kmvar.xPath;
var returnResults = "TBD";
//--- GET THE HTML ELEMENT IDENTIFIED BY THE XPATH ---
var elemFound = document.evaluate(
xPathStr, document, null, 0, null
).iterateNext();
if (elemFound) {
returnResults = elemFound.href;
}
else {
//--- ERROR: ELEMENT WAS NOT FOUND ---
returnResults = '[ERROR] Element NOT FOUND for XPath:\n' + xPathStr;
alert(returnResults);
}
return returnResults;
})();
Here's an example Macro that uses this script:
MACRO: Get Link Using XPath [Example]
#### DOWNLOAD:
<a class="attachment" href="/uploads/default/original/3X/3/b/3b83f6116dad0e6e943997d3b519599dafccf870.kmmacros">Get Link Using XPath [Example].kmmacros</a> (5.3 KB)
**Note: This Macro was uploaded in a DISABLED state. You must enable before it can be triggered.**
---

---
Questions?