如何在selenium中找到页面上的多个元素?

时间:2015-05-05 05:54:50

标签: c# selenium

我在同一页面上有多个输入HTML标签,具有相同的ID和名称或类,

现在我应该如何找到第二或第三等输入。我可以使用数组,所以我们有一些函数将返回该页面中的所有textBox(输入标记)。

3 个答案:

答案 0 :(得分:5)

首先,您使用FindElements创建一个列表,然后您可以遍历该列表。例如:

var allTextBoxes = driver.FindElements(By.TagName("input"));

foreach(var textBox in allTextBoxes)
{
    textBox.DoSomething();
}

您也可以使用for循环:

for(int i = 0; i < allTextBoxes.Count; i++)
{
   allTextBoxes[i].DoSomething();
}     

或者如果你想要一个特定的元素,例如第三个:

allTextBoxes[2].DoSomething();

答案 1 :(得分:0)

我不知道selenium ...但是要选择html页面的元素你可以使用HtmlAgilityPack ..

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://example.com");
HtmlNode node = doc.DocumentNode.SelectNodes("//div[@class='your_class_name']");

它将返回包含your_class_name的节点列表..然后查找并使用您想要的节点。

从您可以使用的页面中选择所有输入标签

foreach (var input in doc.DocumentNode.SelectNodes("//input"))
{
    //your logic here 
}
希望它有所帮助..

答案 2 :(得分:0)

在C#中,我使用FindElements,然后使用ElementAt()

var foo= Driver.FindElements(By.XPath("//div[@class='your_class_name']"));
var foo2= foo.ElementAt(1);

如果它是10个具有相同ID的元素(这是可怕的)并且我想要获取第8个元素,我只使用ElementAt(8);(或者索引7或者你设置了)。

这是一个艰难的电话。我宁愿让他们修复代码,但在某些情况下,这不会发生......至少在不久的将来不会发生。

希望这会有所帮助。