Используя C # WATIN, как мне получить значение элемента html тега INPUT? - PullRequest
3 голосов
/ 05 июня 2010

Используя C # WATIN, как мне получить значение второго вхождения HTML-элемента тега INPUT на странице?

Я перепробовал кучу вещей и не смог. Отладчик не дает мне никакого очевидного способа получить элемент [1] среди возвращенных 4.

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 ]

3 голосов
/ 25 июня 2010

Это может помочь:

        ElementCollection elementCol = ie.Elements;
        elementCol = elementCol.Filter(Find.ByClass("myclass"));
        string value = elemntCol[1].GetAttributeValue("value");
0 голосов
/ 15 августа 2010

Я полагаю, что я случайно наткнулся на лучший ответ из класса ограничения индекса , который:

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

Мне нужно исследовать это. Я вернусь к этому вопросу позже.

0 голосов
/ 11 августа 2010

Никто больше не использует петли? Я думаю, что петли аккуратны (и намного легче понять, почему Ватин демонстрирует такое поведение / украл мой обед ;-):

TextFieldCollection textFields = browser.TextFields;  
foreach (var field in textFields)  
{  
    if (field.Id == "humbuggery")...  
} 
0 голосов
/ 09 июня 2010

Попробуйте

ie.Element(Find.ByIndex(1))
...