我在同一页面上有多个输入HTML标签,具有相同的ID和名称或类,
现在我应该如何找到第二或第三等输入。我可以使用数组,所以我们有一些函数将返回该页面中的所有textBox(输入标记)。
答案 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或者你设置了)。
这是一个艰难的电话。我宁愿让他们修复代码,但在某些情况下,这不会发生......至少在不久的将来不会发生。
希望这会有所帮助。