Ошибка в классе Watin.Core.Comparer StringComparer

Я использую систему Watin в своей программе.

Я получаю следующую ошибку:

ArgumentNullException в Watin.Core.Comparer
StringComparer (строка сравнения Value, bool ignoreCase)
Ошибка: значение не может быть нулевым

Но я понятия не имею, кто и когда вызывается stringcomparer, также я не знаю, как его отладить.

Вот часть моего кода.

using (IE browser = new IE(url))  
            {  
                Trace.TraceInformation("success to create IE instance.");

                int waitSecond = TimeSpan.FromSeconds(30).Seconds;
                browser.WaitForComplete(waitSecond);
                .........
                .........
            }
       )

Добавьте немного ErrorTrace

at WatiN.Core.Comparers.StringComparer..ctor(String comparisonValue, Boolean ignoreCase)
at WitiN.core.DialogHandlers.DialogWatcher.HasDialogSameProcessNameAsBrowserWindow(Window window)
at WatiN.Core.DialogHandlers.DialogWatcher.HandleWindow(Window window)
at WatiN.Core.DialogHandlers.DialogWatcher.Start()
at System.Threading.ThreadHelper.ThreadStart_Context(ojbect state)
at System.Threading.ExecutionContext.Runinternal(exceutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutinoContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutinoContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

1 ответ

Этот код работает как положено (без исключений):

        using (IE browser = new IE("http://www.google.com"))
        {
            //Trace.TraceInformation("success to create IE instance.");

            int waitSecond = TimeSpan.FromSeconds(30).Seconds;
            browser.WaitForComplete(waitSecond);
        }

Убедитесь, что вы используете последние источники для WatiN, и у вас нет никакого другого кода, выполняющегося в это время (исключение, которое вы получаете, если для DialogWatcher, не имеет ничего общего с кодом, который вы опубликовали).

Не уверен, почему вы использовали .WaitForComplete такой метод, но этот метод вызывается по умолчанию для каждого используемого вами метода, который взаимодействует с веб-страницей. Если вы хотите указать общее время ожидания для загрузки веб-страниц, вы должны использовать параметры для объекта WatiN, например:

        Settings.WaitForCompleteTimeOut = 30;
        using (IE browser = new IE("http://www.google.com"))
        {
            //Trace.TraceInformation("success to create IE instance.");
            browser.WaitForComplete();
        }
Другие вопросы по тегам