0

フォームに記入しようとしていますが、その入力のいくつかのとにアンダースコアがnameありidます。それがどういうわけか問題を引き起こすのだろうかと思っていました。

<fieldset>
<label for="user_name">Username</label>
<div class="goodorbad">
<span id="user_name-loading" class="free-or-taken fot-loading">
<img width="24" alt="Checking…" src="/i/loading/fresh-64.gif">
Checking...
</span>
<span id="user_name-free" class="free-or-taken" title="Available">✓&lt;/span>
<span id="user_name-taken" class="free-or-taken" title="Taken">×</span>
</div>
<input id="user_name" type="text" autocomplete="off" tabindex="10" autocorrect="off" autocapitalize="off" maxlength="50" value="" name="user_name">
<div class="suggestions">
</fieldset>

何らかの理由でElementIdまたはName(例外がElementNotFoundをスローしました)でこれを見つけることができません。

これは私がこれまでに試したことです(以下のコードはどれも機能しませんでした)

browser.ElementOfType<TextFieldExtended>(Find.ByClass(new Regex("user.name"))).TypeText("gfgh");

browser.TextField(Find.ById(new Regex("user.name"))).TypeText("gfgh");

browser.TextField(Find.ById("user%5Fname")).TypeText("gfgh");

browser.ElementOfType<TextFieldExtended>("user_name").TypeText("gfgh");

browser.ElementOfType<TextFieldExtended>("user_name").Value="FFF";

browser.Table(Find.ByClass("form-table")).TextField(Find.ByClass("user_name")).TypeText("gfgh");

browser.TextField(Find.ById("user_name")).TypeText("gfgh");
4

2 に答える 2

1

あなたが私のものと同様のケースを持っているなら、これがそれを解決する方法です。

TextFieldを使用する代わりに

 browser.TextField(Find.ById("someID")).TypeText("someText");

要素を使用

 browser.Element(Find.ById("someID")).SetAttributeValue("value","someText");

チャームのように機能します!

于 2013-01-13T11:39:21.427 に答える
0

アンダースコア付きのIDと名前の検索は問題なく機能します。私はいつもそれをします。考えられる原因は、正しいIDまたは名前がない(<-これが最も可能性が高い)、テキストボックスがフレーム内にある(可能性が低い)、または正しい実行中のブラウザーに対してWatiNコードを実行していないことです。これには、ポップアップとダイアログも含まれます。(可能性が低い)。

サンプルHTML-わかりやすくするためにIDを少し変更

<html>
<body>
<input name="user_name" id="user_id" value="" maxlength="50" autocapitalize="off" autocorrect="off" tabindex="10" autocomplete="off" type="text">
</body>
</html>

サンプルC#/ WatiN

IE myIE = new IE();
myIE.GoTo("theCorrectURL");
myIE.TextField("user_id").TypeText("Found By ID");
System.Threading.Thread.Sleep(500);  //not needed other than to watch what is happening
myIE.TextField(Find.ByName("user_name")).TypeText("Found By Name");

上記は、WatiN 2.1、IE9、Win7-64で動作し、テストされています

その他の注意事項

1)タグにCSSクラスが定義されていないため、Find.ByClass( "user_name")はそれを検索しません。持っていれば、Find.ByClass( "theCssClass")のように検索できます。

2)ブラウザの種類はWatiN.Core.IE(またはおそらく.Firefox)になります。それが実際にWindows.Forms.WebBrowserである場合、私は非常に驚かれることでしょう。

于 2013-01-11T19:59:19.557 に答える