Visual Basic
' Let's start with the span1 element.
Dim span1 As Element = Find.ById("span1")
Dim span2 As Element = span1.GetNextSibling()
Dim span3 As Element = span2.GetNextSibling()
' Let's verify we got the right elements
Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), "Actual ID: {0}", span1.IdAttributeValue)
Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), "Actual ID: {0}", span2.IdAttributeValue)
Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), "Actual ID: {0}", span3.IdAttributeValue)
' Now let's navigate backwards
span2 = span3.GetPreviousSibling()
span1 = span2.GetPreviousSibling()
Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), "Actual ID: {0}", span1.IdAttributeValue)
Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), "Actual ID: {0}", span2.IdAttributeValue)
Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), "Actual ID: {0}", span3.IdAttributeValue)
' Now let's look at parent and children
Dim parentDiv As Element = span1.Parent
' ChildNodes includes all nodes including text and comments. Children is a subset of ChildNodes.
Assert.AreEqual(parentDiv.ChildNodes.Count, 4, "ChildNodes = {0}", parentDiv.ChildNodes)
' Children are basically only markup children. (Does not include text or comments);
Assert.AreEqual(parentDiv.Children.Count, 3, "Children = {0}", parentDiv.ChildNodes)
span1 = parentDiv.Children(0)
span2 = parentDiv.Children(1)
span3 = parentDiv.Children(2)
Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), "Actual ID: {0}", span1.IdAttributeValue)
Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), "Actual ID: {0}", span2.IdAttributeValue)
Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), "Actual ID: {0}", span3.IdAttributeValue)