Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why doesn't google chrome print the text() of my XPath query?

I am trying to extract the texts of an xpath query, $x('//td[@class="first"]/a/text()') in Chrome but then when I run this command I see text as opposed to the actual text value of the anchor links.

When I run s.toString() I am seeing [object Text],[object Text],[object Text],[object Text]....

How can I get their string value in the xpath?

like image 206
Tinker Avatar asked Jul 28 '17 06:07

Tinker


2 Answers

Use the following command under these circumstances:
- The element's text is stored in data.
- You want to trim leading and trailing whitespace from the data.
- You want to easily copy paste the output from the console delimited by break-line.

console.log($x(<pathToElement>/text()').map(function(el){return el.data.trim()}).join("\n"))
like image 152
Luis Meraz Avatar answered Sep 16 '22 19:09

Luis Meraz


Because $x() returns an array of HTML or XML elements matching the given XPath expression. It is a shortcut for document.evaluate(). If you want to get exact element, just get it by position out of the array

$x(element)[0]

This may be helpful: https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#xpath

If you want to print(or do any other stuff) all text elements found by locator in console - you can just call forEach function:

$x('//a/text()').forEach(function(el){console.log(el)})
$x('//a/text()').forEach(el => console.log(el))
like image 34
Vitaliy Moskalyuk Avatar answered Sep 17 '22 19:09

Vitaliy Moskalyuk