使用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
基本上,我希望能够通过数组索引选择输入元素。
答案 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"))
我需要研究它。我稍后会再次回答这个问题。