Estou procurando algo como:
getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
Preciso obter o innerHTML de elementos usando JS (para usá-lo no Selenium WebDriver / Java, já que o WebDriver não consegue encontrá-lo), mas como?
Eu poderia usar o atributo ID, mas nem todos os elementos têm atributo ID.
[FIXO]
Estou usando o jsoup para fazer isso em Java. Isso funciona para as minhas necessidades.
html
ebody
são supérfluos, pois um DIV deve ser um descendente de BODY (imediato ou mais profundo) e BODY deve ser um filho de HTML, portanto, desde que não haja outros elementos DIV no documento,//DIV[1]
deve funcionar (embora eu seja bastante enferrujado nas expressões XPath). O equivalente DOM édocument.getElementsByTagName('div')[1]
(ou talvez0
).Respostas:
Você pode usar
document.evaluate
:É padronizado para w3 e todo documentado: https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate
https://gist.github.com/yckart/6351935
Também há uma ótima introdução à rede de desenvolvedores do mozilla: https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#document.evaluate
Versão alternativa, usando
XPathEvaluator
:Mostrar snippet de código
fonte
XPathResult.FIRST_ORDERED_NODE_TYPE === 9
developer.mozilla.org/pt-BR/docs/…Nas Ferramentas de Desenvolvimento do Chrome, você pode executar o seguinte:
fonte
Para algo como $ x da api da linha de comando do chrome (para selecionar vários elementos), tente:
Esta visão geral do MDN ajudou: https://developer.mozilla.org/pt-BR/docs/Introduction_to_using_XPath_in_JavaScript
fonte
Você pode usar o document.evaluate do javascript para executar uma expressão XPath no DOM. Eu acho que é suportado de uma forma ou de outra nos navegadores do IE 6.
MDN: https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate
O IE suporta selectNodes .
MSDN: https://msdn.microsoft.com/en-us/library/ms754523(v=vs.85).aspx
fonte
Assumindo que seu objetivo é desenvolver e testar suas consultas xpath para mapas de tela. Em seguida, use as ferramentas de desenvolvedor do Chrome . Isso permite que você execute a consulta xpath para mostrar as correspondências. Ou no Firefox> 9, você pode fazer o mesmo com o console das Ferramentas para Desenvolvedor da Web . Na versão anterior, use x-path-finder ou Firebug .
fonte
Verifique se você está usando o localizador certo para isso.
fonte
fonte
fonte
Para direcionar ao ponto, você pode usar facilmente xapth. A maneira exata e simples de fazer isso usando o código abaixo. Por favor, tente e fornecer feedback. Obrigado.
Leituras adicionais - https://medium.com/@smeesheady/webdriver-javascriptexecutor-interact-with-elements-and-open-and-handle-multiple-tabs-and-get-url-dcfda49bfa0f
fonte