I am a newcomer to XPath.
I am looking for a way to get all elements whose tag name contains a particular string.
For example, if I have XML like below, I want to get all the elements whose tag name contains the word 'Name'. i.e., I want to fetch the following elements: <SquareName>
, <RectangleName>
, and <ParallelogramName>
.
I tried some combinations of name()
, contains()
etc., but it did not work. Please suggest.
<Objects> <Four-Sided> <Square> <SquareName>ABCD</SquareName> <Length>4</Length> <Height>4</Height> <Colour>Blue</Colour> </Square> <Rectangle> <RectangleName>EFGH</RectangleName> <Length>10</Length> <Height>6</Height> <Colour>Brown</Colour> </Rectangle> <Parallelogram> <ParallelogramName>WXYZ</ParallelogramName> <Length>12</Length> <Height>4</Height> <Colour>Black</Colour> </Parallelogram> </Four-Sided> </Objects>
The syntax for locating elements through XPath- Using contains() method can be written as: //<HTML tag>[contains(@attribute_name,'attribute_value')]
The XPath default axis is child , so your predicate [*/android.widget.TextView[@androidXtext='Microwaves']] is equivalent to [child::*/child::android.widget.TextView[@androidXtext='Microwaves']] This predicate will select nodes with a android. widget. TextView grandchild and the specified attribute.
XPath text() function is a built-in function of the Selenium web driver that locates items based on their text. It aids in the identification of certain text elements as well as the location of those components within a set of text nodes. The elements that need to be found should be in string format.
For an XPath solution:
//*[contains(local-name(), 'Name')]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With