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 回答