使用C#WATIN,如何获取INPUT标签html元素的值?

时间:2010-06-04 22:39:25

标签: c# unit-testing watin

使用C#WATIN,如何获取页面上INPUT标签html元素第二次出现的值?

我尝试过很多东西并没有成功。调试器没有给我任何明显的方法来获得返回的4中的元素[1]。

Console.WriteLine(ie.Element(Find.ByClass("myclass")).GetAttributeValue("value")  ) ;  
// works but prints the value of the 1st of 4 input elements on the page

Console.WriteLine(ie.ElementsWithTag("input", "text").Length.ToString()  ); 
// returns the number 4

Console.WriteLine( ie.Element(Find.ByName("login")).GetAttributeValue("value")  );
// works but its not safe since its possible there might be two elements with the name login

基本上,我希望能够通过数组索引选择输入元素。

4 个答案:

答案 0 :(得分:3)

这可以提供帮助:

        ElementCollection elementCol = ie.Elements;
        elementCol = elementCol.Filter(Find.ByClass("myclass"));
        string value = elemntCol[1].GetAttributeValue("value");

答案 1 :(得分:0)

尝试

ie.Element(Find.ByIndex(1))

答案 2 :(得分:0)

没有人再使用循环吗?我认为循环很整洁(理解为什么Watin表现出这种行为/偷走我的午餐会更容易;-):

TextFieldCollection textFields = browser.TextFields;  
foreach (var field in textFields)  
{  
    if (field.Id == "humbuggery")...  
} 

答案 3 :(得分:0)

我相信我可能会偶然遇到来自index constraint class的更好答案,这是:

ie.Link(new IndexConstraint(1) && Find.ByName("linkname"))

我需要研究它。我稍后会再次回答这个问题。