0

我在我的程序中使用 Watin 系统。

我收到以下错误:

Watin.Core.Comparer
StringComparer(string comparisonValue, bool ignoreCase)的 ArgumentNullException
错误:值不能为 Null(comparisonValue)

但是我不知道谁以及何时调用了 stringcomparer,我也不知道如何调试它。

这是我的一些代码。

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

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

添加一些错误跟踪

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()
4

1 回答 1

0

此代码按预期工作(没有抛出异常):

        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();
        }
于 2015-10-26T18:29:46.430 回答