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
Name1
three times? - Why is
dateInput.FindElement
even able to find theRoot
div at all?Root
div is located in completely different level than thedate
element. And since I'm doing//div...
, which means find the div in the current node (right?), ondateInput.FindElement
it should NOT even find theRoot
div, 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>