Monday 31 March 2014

Xpath | Selenium Uses - Part II


Note|  Text in Blue [#PYTHON] and Orange [#JAVA] can be edited or mentioned important for the entire blog. All the posts are practically done by me.


XPath Axes

XPath Axes lets you navigate and provide direction within the tree representation of the XML document.

The location path can be either
     1| Absolute location path
         - Starts with (/)
         e.g., /step/step/..
     2| Relative location path
         - Does not starts with (/)
         e.g., step/step/..

Here, each and every step consists of
 1| axis
 2| node-test
 3| zero or predicates

axisname::nodetest[predicate]


     Axis name
            ancestor
            ancestor-or-self
            attribute (@)
            child (/)
            descendant (//)
            descendant-or-self
            following
            following-sibling
            namespace
            parent(../)
            preceding
            preceding-sibling
            self (./)


The Xpath Axes mentioned below are based on the following URL, http://docs.python.org/2/library/re.html


    ancestor

     Ancestor lets you select any ancestors [e.g., Parent and Grandparent] of the current node.
     //*[@id='regular-expression-syntax']/ancestor::div[5]/div[2]
     //*[@id='regular-expression-syntax']/ancestor::*

    ancestor-or-self

     Ancestor-or-self lets you select any ancestors [e.g., Parent and Grandparent] of the current                      node including the current node.
     //*[@id='regular-expression-syntax']/ancestor-or-self::div[1]
     //*[@id='regular-expression-syntax']/ancestor-or-self::*

    attribute

     Attribute returns all the attributes in the current node.
     //*[@class='sphinxsidebarwrapper']/attribute::*
     //*[@id='sidebarbutton']/attribute::title

    child

     Child returns all the children in the current node.
     //*[@class='sphinxsidebarwrapper']/child::*
     //*//child::h3

    descendant

     Descendant lets you select all descendants [e.g., Children and Grandchildren] of the current node.
     //*[@class='this-page-menu']/descendant::*
     //*[@class='this-page-menu']/descendant::li[2]
     //*[@class='documentwrapper']/descendant::div[position()=3]

    descendant-or-self

     Descendant-or-self lets you select all descendants [e.g., Children and Grandchildren] of the current       node including the current node.
     //*[@class='this-page-menu']/descendant-or-self::*
     //*[@id='searchbox']/descendant-or-self::form[@class='search']/input[2]

    following

     Following returns all in the document after the closing tag of the current node.
     //*[@class='clearer']/following::*

    following-sibling

     Following-sibling returns all the sibling after the closing tag of the current node.
     //*[@class='related']/following-sibling::*
     //*[@class='related']/following-sibling::div[3]


    namespace

     Namespace returns all namespace nodes in the current node.
     TBD

    parent

     Parent returns the parent of the current node.
     //*[@class='sphinxsidebar']/parent::node()
     //*[@class='bodywrapper']/parent::*
     //*[@class='bodywrapper']/parent::div[1]
     //*[@class='bodywrapper']/parent::div

    preceding

     Preceding is a reverse of Following;  Preceding returns all in the document before the current node
     //*[@class='bodywrapper']/preceding::*

    preceding-sibling

     Preceding-sibling is a reverse of Following-sibling;  Preceding-sibling returns all the sibling before        the current node.
     //*[@class='footer']/preceding-sibling::*
     //*[@class='footer']/preceding-sibling::div[2]

    self

     Self returns the current node.
     //*[@class='footer']/self::*
     //*[@class='footer']/self::div


Note| Refer URL for more details

1 comment:

  1. It was very nice article and it is very useful to Selenium learners.We also provide Cub training software online training.

    ReplyDelete