如何等到文本框启用watin

时间:2012-01-02 09:32:12

标签: asp.net watin

我的页面上有一个文本框,在加载事件文本框上是禁用10然后启用它 所以如何在watin中等待10秒。 我正在尝试这段代码

IE ie = new IE("http://localhost:2034/WebForm3.aspx");
         ie.ShowWindow(WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Maximize);
         ie.TextField("TextBox1").TypeText("Fer");

但它给出了TextBox1禁用的错误,所以我想等一段时间。 那怎么办? 请帮帮我?

4 个答案:

答案 0 :(得分:0)

您可以将线程暂停一段固定的时间,以便测试等待:

            System.Threading.Thread.Sleep(10000);

时间以毫秒为单位。也许你需要增加一点这个数字,但这仍然可行。

答案 1 :(得分:0)

如果在网页加载时运行,你可以使用它:

ie.WaitForComplete();

等待完成将使测试等到所有元素和帧都被加载后再执行下一个任务,在你的情况下找到文本框进行输入。

让线程进入睡眠状态的唯一问题是它可能需要比你需要的时间更长的时间。通过这种方式,您可以在页面完成后立即运行。 (可能会有所不同)。

答案 2 :(得分:0)

两种更好的方式,而不仅仅是使用长Thread.Sleep()来等待字段由于脚本或asnyc调用而启用;例如Ajax。 (注意:我很惭愧承认我的代码中有多长的Thread.Sleeps()。)

以下是引用复选框,但相同的概念应该在文本框或其他控件上正常工作。

1)检查已禁用的属性。

myPage.myCheckbox.WaitUntil("disabled", false.ToString())

2)对场地进行轮询,每次检查都会在很短的时间内睡觉。我做了这个轮询模式,因为上面简单的一个衬垫不起作用;我不记得为什么,因为它已经有一段时间了。

int sleepTime = 100;
int numberOfPolls = 50;

for (int i = 0; i < 50; i++)
{
    if (myPage.myCheckbox.Enabled == false)
    {
        Thread.Sleep(100);
    }
    else
    {
        break;
    }
}

答案 3 :(得分:0)

你可以试试这个......

ie.Element("TextBox1").WaitUntil<Element>(element => element.Enabled);