2013-01-14 60 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 =>按预期工作。