我正在学习Watin,我遇到了一段有趣的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标签。
我想使用watin SET / * REPLACE * 34与另一个号码,但是如何?
答案 0 :(得分:1)
WatiN没有标记值的设置器,就像你要问的那样。它可以通过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测试,Watin 2.1,IE9,Win7-64 =&gt;按预期工作。
答案 1 :(得分:0)
我想象
之类的东西var result = browserInstance.LabelField(lf => lf.GetAttributeValue("class").Contains("age_label years_old")).Children().First().Text;
答案 2 :(得分:0)
如果这是您页面上唯一的<b>
标记,则可能会有效:
IE.ElementWithTag("b", Find.First());
祝你好运。