I want to print text of each div with class="Name". The code below prints Name1 three times instead of Name1, Name2 and Name3.
- Why does my code print
Name1three times? - Why is
dateInput.FindElementeven able to find theRootdiv at all?Rootdiv is located in completely different level than thedateelement. And since I'm doing//div..., which means find the div in the current node (right?), ondateInput.FindElementit should NOT even find theRootdiv, right?
CODE
var dateInput = driver.FindElement(By.Id("date"));
var rootElement = dateInput.FindElement(By.XPath("//div[contains(@class,'Root')]"));
var boxes = rootElement.FindElements(By.XPath("//div[contains(@class,'Box)]"));
foreach (var box in boxes)
{
var nameElement = box.FindElement(By.XPath("//div[contains(@class,'Name')]"));
Console.WriteLine(nameElement.Text);
}
HTML
<div>
<div>
<input id="date"></div>
</div>
<div class="__Root">
<div>
<div class="__Box">
<div class="__Name">Name1</div>
</div>
<div class="__Box">
<div class="__Name">Name2</div>
</div>
<div class="__Box">
<div class="__Name">Name3</div>
</div>
</div>
</div>
</div>