2

私は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またはクラスによる入力の選択に慣れているため、完全に失われました。しかし、ここでは入力ではありません。その単なるhtmlタグ。

ワティンを使って/* ​​REPLACE * 34を別の番号に設定したいのですが、どうすればよいですか?

4

3 に答える 3

1

WatiN には、あなたが求めているようなタグ値のセッターがありません。ただし、JavaScriptを使用すると簡単に実行できます。また、JS 呼び出しを WatiN .GetJavascriptElementReference と組み合わせて JS 要素を取得すると、実行しようとしていることが非常に簡単になります。(これを行う純粋な JS の方法があると確信していますが、最近は JS よりも WatiN の方が優れています) うまくいけば明らかなように、最初の太字のタグを見つけることは非常に脆弱なアプローチであり、より良いアプローチが可能である場合要素の位置に使用されます。

また、この「セッター」アクションをテストに使用している場合は、ユーザーが実行できないことを変更しているため、不快な臭いがします。

サンプルコード

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

上記は OP の HTML、Watin 2.1、IE9、Win7-64 でテスト済み => 期待どおりに動作します。

于 2013-01-14T20:59:16.430 に答える
0

私は次のようなものを想像します

var result = browserInstance.LabelField(lf => lf.GetAttributeValue("class").Contains("age_label years_old")).Children().First().Text;
于 2013-01-14T02:47:00.090 に答える
0

これがページ上の唯一<b>のタグである場合、これはうまくいくかもしれません:

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

幸運を。

于 2013-01-14T02:51:46.050 に答える