как дождаться включения текстового поля в watin - PullRequest
0 голосов
/ 02 января 2012

У меня есть одно текстовое поле на моей странице. Текстовое поле события загрузки отключено на 10, затем его включение, так как ждать 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 голосов
/ 17 января 2012

Вы можете попробовать это ...

ie.Element("TextBox1").WaitUntil<Element>(element => element.Enabled);
0 голосов
/ 06 января 2012

Если он запускается при загрузке веб-страницы, вы, вероятно, можете просто использовать это:

ie.WaitForComplete();

Ожидание завершения заставит тест ждать, пока все элементы и фреймы не будут загружены перед выполнением следующей задачи, в вашем случае найдите текстовое поле для ввода.

Единственная проблема, которую я испытываю при переводе потока в спящий режим, заключается в том, что это может занять немного больше времени, чем вам может понадобиться. Таким образом, вы знаете, что он работает, как только страница готова. (Который может немного отличаться).

0 голосов
/ 06 января 2012

Два лучше способов, чем просто использование длинного 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;
    }
}
0 голосов
/ 03 января 2012

Вы можете просто приостановить поток в течение фиксированного промежутка времени для ожидания теста:

            System.Threading.Thread.Sleep(10000);

Время указывается в миллисекундах.Возможно, вам нужно немного увеличить это число, но все же это должно сработать.

...