2013-01-14 58 views
2

我學華廷和我遇到了一個有趣的一段HTML代碼來:如何爲元素設置值?

<label class="age_label years_old" for="total_age"> 
<b>34</b> 
<span class="placeholder">How old are you?</span> 
<span class="years_old">years old</span> 
<span class="years_young">years young</span> 
</label> 

我如何獲得34?林,因爲我已經習慣由id或class選擇輸入完全喪失。但是這裏沒有輸入。它只是一個html標籤。

我想SET/* 更換 * 34使用華廷另一個號碼,但如何?

回答

0

我想像像

var result = browserInstance.LabelField(lf => lf.GetAttributeValue("class").Contains("age_label years_old")).Children().First().Text; 
+0

感謝您的回覆,抱歉我不想清楚,我想用另一個數字替換第34個數字:) –

+1

這是一個單元測試庫,如果它沒有.replace,您可能運氣不好。如果是操縱,那麼有更好的選擇。 –

0

如果這是你唯一的頁面上<b>標籤,那麼這可能會奏效:

IE.ElementWithTag("b", Find.First()); 

好運。

0

WatiN沒有標籤值的setter,比如你問的東西。它可以很容易地通過JavaScript來完成。並且將JS調用與WatiN.GetJavascriptElementReference結合起來以獲得JS元素,使得您嘗試做的事情變得非常簡單。 (我確信有一個純JS方法可以做到這一點,但我最近在WatiN比JS更好)正如希望顯而易見的,找到第一個大膽的標籤是一個非常非常脆弱的方法,如果更好的方法可以被採取爲元素位置。

而且,如果您使用此「setter」動作進行測試 - 這是一種令人討厭的氣味,因爲您正在改變用戶無法做到的事情。

實施例代碼

var jsRef = myIE.ElementsWithTag("b")[0].GetJavascriptElementReference(); 
myIE.Eval(string.Format("{0}.innerHTML = 'fred'", jsRef)); 

上面帶有OP的HTML測試,華廷2.1,IE9,Win7-64 =>按預期工作。