0

この単純なコードを使用して、WatiN ライブラリをテストしています。

using (var browser = new IE("http://www.google.de"))
{
    browser.TextField(Find.ByName("q")).TypeText("WatiN");        
    Button btn1 = browser.Button(Find.ById("gbqfba"));
    btn1.Click();
    while (!browser.ContainsText("watin.org"))
    {
        System.Threading.Thread.Sleep( 500 );
        btn1.Click();
    }
}

とにかく、どこかにブレークポイントがあるデバッグモードで実行すると正常に動作しますが、リリースモードで実行するとすぐに目的のテキストが入力されますが、ボタンがクリックされていないように見えるため、テキストを含む検索フィールドがあります、検索結果が得られません。

これに関する既知の問題はありますか? 何か案は?

ありがとうございました

4

2 に答える 2

1

私もWatiNの初心者ですが、これが機能するまでに少し時間がかかりました. まず、このソリューションを読んでください。

ボタンをクリックするのを待つ

ソリューションを機能させるには、ソリューションを実装するさまざまな方法を試す必要がある場合があります。例えば:

まずラインを入れます

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click

「クリック」アクションの前ですが、それはデバッグモードでのみ機能しました(私のコードは以前はまったく機能しなかったため、デバッグモードで機能するようにすることが進行中でした)。

次に、項目の前に次の行を追加して、実行モードで動作するようにします。

browserInstance = new IE(@"http://www.google.com");

TextField criteria = browserInstance.TextField(tf => tf.Name == "q");

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
criteria.TypeText("Come Jam With Us");

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
browserInstance.Button(Find.ById("gbqfb")).Click();

なぜこれが機能するのかわかりませんが、お役に立てば幸いです。

于 2013-05-01T16:02:08.127 に答える
1

すべてがロードされるまでコードに待機を挿入する必要があります。その後、コントロールを見つけることができます。

デバッグモードで動作するのは、ブレークポイントを使用してデバッグしている間、物事が完全にロードされる時間が得られるためです。

于 2012-06-01T06:05:00.370 に答える