2010-06-04 31 views
3

使用C#WATIN,如何獲取頁面上第二次出現INPUT標籤html元素的值?使用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 

基本上,我希望能夠通過其數組索引選擇輸入元件。

回答

3

這可以幫助:

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

好主意!謝謝。 ;-) – djangofan 2010-06-25 20:03:55

0

不任何人使用循環了嗎?我認爲循環整潔(以及爲什麼華廷表現出這種行爲/偷了我的午餐;-)的理解更容易了一大堆:

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

...更多循環式,我的意思是:-) – 2010-08-11 14:33:42

0

,我相信我也可以有index constraint class跨越一個更好的答案不小心碰到,它是:

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

我需要研究它。稍後我會再回顧一下這個問題。

+0

@sth - 感謝編輯。這對你很好。 – djangofan 2010-08-19 17:35:30

相關問題