简体   繁体   中英

Using C# WATIN, how do I get the value of a INPUT tag html element?

Using C# WATIN, how do I get the value of the second occurence of a INPUT tag html element on a page?

I've tried a whole bunch of things and haven't succeeded. The debugger isn't giving me any obvious way to get element[1] among the 4 that returned.

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

Basically, I want to be able to select the input element by its array index .

This can help:

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

尝试

ie.Element(Find.ByIndex(1))

Doesn't anybody use loops anymore? I think loops are neat (and a whole lot easier on the comprehension of why Watin exhibits this behavior / stole my lunch ;-) :

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

I believe that I may have accidentally ran across a better answer from index constraint class , which is:

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

I need to research it. I'll revisit this question later.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM