如何为元素设置值

本文关键字:设置 元素 | 更新日期: 2023-09-27 17:53:20

我正在学习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标签。

我想SET/*用另一个使用watin的数字替换* 34,但是如何?

如何为元素设置值

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 =>工作正常

我想象一下

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

如果这是页面上唯一的<b>标记,那么这可能有效:

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

好运。

相关文章: