Найти элемент по XPath и кликнуть

262
05 ноября 2017, 19:59

Нужно найти на странице элемент по XPath и кликнуть по нему.

Нашел такую функцию:

function getElementByXpath(path) {
            return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;            
        }

Но результатом выполнения этой функции будет тип Node, у которого нет метода click.

Можно ли как-то привести тип Node к типу HtmlElement, чтобы можно было взаимодействовать с элементом?

Answer 1

Вот небольшой пример кода, который добавляет к первому найденному элементу onclick:

var headings = document.evaluate("/html/body//h2", document, null, XPathResult.ANY_TYPE, null); 
/* Найти в документе все элементы h2 
 * В качестве результата будет получен узловой итератор. */ 
var thisHeading = headings.iterateNext(); 
thisHeading.onclick = function() { 
  alert('YES'); 
} 
var alertText = "В данном документе заголовками 2-го уровня являются:\n"; 
while (thisHeading) { 
  alertText += thisHeading.textContent + "\n"; 
  thisHeading = headings.iterateNext(); 
} 
console.log(alertText);
Hi! 
<h2>Element #1</h2> 
<div>Just an div element</div> 
<h2>Element #2</h2>

READ ALSO
Имитация комбинации &ldquo;Shift + Enter&rdquo; js

Имитация комбинации “Shift + Enter” js

Отменил действие по умолчанию на комбанацию ctrl + z и нужно что-бы по этой комбинации делался перевод строки в поле для вводаЯ это делаю добавлением...

349