Проверка отсутствия HTML-элемента - PullRequest
2 голосов
/ 29 октября 2010

Я делаю тестирование пользовательского интерфейса с помощью Watin (Watir, для Java-людей).Мне нужно проверить, что элемент не присутствует в HTML.На сегодняшний день я делаю это следующим образом:

    [FindBy(Id = "pnConfirmation")]
    protected Div Confirmation;

    public bool ConfirmationMessageDisplayed
    {
        get
        {
            try
            {
                return Confirmation.Text != "";
            }
            catch (ElementNotFoundException)
            {
                return false;
            }
        }
    }

Но это занимает очень много времени.Есть ли более эффективный способ сделать это?

1 Ответ

5 голосов
/ 29 октября 2010

Каждый раз, когда вы звоните Confirmation.Text WatiN ждет, пока элемент не существует. По истечении этого времени ElementNotFoundException выбрасывается. По умолчанию WatiN ждет 30 секунд для отображения элемента. Это можно изменить, установив значение Settings.WaitUntilExistsTimeOut.

Чтобы решить свою проблему, вы можете сделать несколько вещей. Например, вы можете изменить эту строку:

return Confirmation.Text != "";

до

return Confirmation.Exists && Confirmation.Text != "";

Но вы должны помнить, что это вернет false, даже если этот элемент появится через 1 секунду. Если вы хотите использовать это решение, я думаю, что вам не нужно перехватывать это исключение, если вы уверены, что как только оно появится, оно не будет удалено.

Конечно, вы можете изменить значение Settings.WaitUntilExistsTimeOut. Если вы не хотите изменять это значение, но хотите немного подождать, вы можете заменить свой геттер следующим кодом:

try
{
    Confirmation.WaitUntilExists(1); //Wait only one second
    return Confirmation.Text != "";
}
catch (WatiN.Core.Exceptions.TimeoutException) //Different exception!
{
    return false;
}
...