我在我的程序中使用Watin系统。
我收到以下错误:
Watin.Core.Comparer的ArgumentNullException
StringComparer(string comparisonValue,bool ignoreCase)
错误:值不能为空(comparisonValue)
但我不知道是谁以及何时调用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()
答案 0 :(得分: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();
}