Con el siguiente código (destinado a un bookmarklet), estoy tratando de abrir una nueva ventana, buscar ciertos elementos de intervalo y hacer clic en cada uno de ellos. Sin embargo, no puedo acceder al código de la nueva ventana a través de XPath.
clickElem function
directamente en la nueva pestaña funciona bienJavaScript:
const w = window.open('https://example.com', 'Example', 'width=500, height=500'); w.clickElem = () => { const xpath = '//span[text()="Click here"]'; const selectedNodeElements = w.document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); let currentNode = selectedNodeElements.iterateNext(); while (currentNode) { currentNode.click(); currentNode = selectedNodeElements.iterateNext(); } } setTimeout(w.clickElem, 8000);
Cuando intento acceder al texto a través currentNode.textContent
, recibo el siguiente error:
"Error in protected function: Cannot read properties of null (reading 'textContent')"
¡Agradecido por cada pista!
Finalmente encontré mi propio error después de revisar mi código una y otra vez y encontrar esta respuesta . .iterateNext()
no funcionó porque el nodo de contexto se configuró incorrectamente en document
. En su lugar, debería ser w.document
para hacer referencia a la ventana recién abierta.
const selectedNodeElements = w.document.evaluate(xpath, w.document, null, XPathResult.ANY_TYPE, null);