开发者

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

开发者 https://www.devze.com 2023-01-02 03:31 出处:网络
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 obvio

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 print开发者_开发问答s 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");


Try

ie.Element(Find.ByIndex(1))


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.


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")...  
} 
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号