Search code examples
javascriptgoogle-chrome-console

Get attribute values matching xpath


Consider the following sample HTML:

<html>
    <head></head>
    <body>
        <a href="link1.html">link1</a>
        <a href="link2.html">link2</a>
    </body>
</html>

$x('/html/body/a/@href') in the Chrome developer console gives me two results: enter image description here

Now instead of just matching href, I want to extract the attribute values of href, so the result I want is an array ["link1.html", "link2.html"]. How can I do that?


Solution

  • You can't get an attribute's value directly using xPath, you'll need, after getting the href, to loop over them to get each value

    $x('/html/body/a/@href')[0].value
    $x('/html/body/a/@href')[1].value
    

    Something like this :

    $x('/html/body/a/@href').map(x => x.value)