Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. public String getAbsoluteXPath(WebDriver driver)
  2. {
  3. return (String) driver.executeScript(
  4. "function absoluteXPath(element) {"+
  5. "var comp, comps = [];"+
  6. "var parent = null;"+
  7. "var xpath = '';"+
  8. "var getPos = function(element) {"+
  9. "var position = 1, curNode;"+
  10. "if (element.nodeType == Node.ATTRIBUTE_NODE) {"+
  11. "return null;"+
  12. "}"+
  13. "for (curNode = element.previousSibling; curNode; curNode = curNode.previousSibling){"+
  14. "if (curNode.nodeName == element.nodeName) {"+
  15. "++position;"+
  16. "}"+
  17. "}"+
  18. "return position;"+
  19. "};"+
  20.  
  21. "if (element instanceof Document) {"+
  22. "return '/';"+
  23. "}"+
  24.  
  25. "for (; element && !(element instanceof Document); element = element.nodeType == Node.ATTRIBUTE_NODE ? element.ownerElement : element.parentNode) {"+
  26. "comp = comps[comps.length] = {};"+
  27. "switch (element.nodeType) {"+
  28. "case Node.TEXT_NODE:"+
  29. "comp.name = 'text()';"+
  30. "break;"+
  31. "case Node.ATTRIBUTE_NODE:"+
  32. "comp.name = '@' + element.nodeName;"+
  33. "break;"+
  34. "case Node.PROCESSING_INSTRUCTION_NODE:"+
  35. "comp.name = 'processing-instruction()';"+
  36. "break;"+
  37. "case Node.COMMENT_NODE:"+
  38. "comp.name = 'comment()';"+
  39. "break;"+
  40. "case Node.ELEMENT_NODE:"+
  41. "comp.name = element.nodeName;"+
  42. "break;"+
  43. "}"+
  44. "comp.position = getPos(element);"+
  45. "}"+
  46.  
  47. "for (var i = comps.length - 1; i >= 0; i--) {"+
  48. "comp = comps[i];"+
  49. "xpath += '/' + comp.name.toLowerCase();"+
  50. "if (comp.position !== null) {"+
  51. "xpath += '[' + comp.position + ']';"+
  52. "}"+
  53. "}"+
  54.  
  55. "return xpath;"+
  56.  
  57. "} return absoluteXPath(arguments[0]);", this.element);
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement