0

フォーラムの大量のユーザー名可用性チェッカーを作成していますが、タイマーが高速に設定されている場合、フォーラムでユーザー名が利用できないときにユーザー名が利用可能であると表示されることがあります。

リストボックス内の次のユーザー名にスキップする前に、ユーザー名が正しくチェックされていることを確認するにはどうすればよいですか?

私のコードの例:

// Timer1
timer1.Stop();
webBrowser1.Document.GetElementById("username").InnerText = list.SelectedItem.ToString();
webBrowser1.Document.GetElementById("register").InvokeMember("Click");   
list.SelectedIndex = list.SelectedIndex + 1;
timer2.Start();

// Timer2
timer2.Stop();
if (webBrowser1.Document.GetElementById("status").ToString().Contains("available"))
        {
            list2.Items.Add(list.SelectedItem.ToString());

            timer1.Start();
        }
        else
        {

            timer1.Start();
        }

WatiNなどを使用して、ユーザー名が使用可能かどうかを確認してから次のタグにスキップするのを待つことはできますか?ページはリロードされません。

4

1 に答える 1

0

XまたはYを含むページコンテンツをポーリングして、続行できます。ここでは、ページに「利用可能」または「申し訳ありませんが、他のものを選択してください」というメッセージが表示されると想定しています。はい/いいえのステータスが表示されていない場合、これはより困難になります。

次のようなもの:これはテストされたコードではなく、あなたのようなシナリオで私が行ったタイプの大まかなアイデアです。

int maxWaitTime = 5000
int timeWaited = 0
int interval

while (!status.text.contains("available")) && !status.text.contains("pick something else") && timewaited < maxWaitTime)
{
    Thread.Sleep(X)
    timeWaited += interval;   //Add X miliseconds.
}

if (timeWaited >= maxWaitTime)
{
    throw new TimeoutException("Took too long to get a status")
}
于 2012-12-03T15:32:26.293 に答える