2015-10-22 1 views
0

J'utilise le système Watin dans mon programme.Erreur à Watin.Core.Comparer StringComparer class

J'obtiens l'erreur suivante:

ArgumentNullException at Watin.Core.Comparer
StringComparer(string comparisonValue, bool ignoreCase)
Error : Value Cannot be Null(comparisonValue)

Mais je ne sais pas que qui et quand StringComparer est appelé, aussi je ne sais pas comment le déboguer.

Voici une partie de mon code.

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

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

Ajouter une 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

Avez-vous confirmé avec un débogueur 'url' est non nul? – BACON

+0

S'il vous plaît poster l'erreur complète et retraçage. –

+0

@BACON oui, j'ai vérifié. La valeur de l'URL n'est pas nulle. – Phillip

Répondre

0

Ce code fonctionne comme prévu (sans exception moulinée):

 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); 
     } 

Assurez-vous que vous utilisez les dernières sources pour Watin et vous ne avoir un autre code s'exécutant à ce moment-là (l'exception que vous obtenez si pour un DialogWatcher, rien à voir avec le code que vous avez posté).

Je ne sais pas pourquoi vous avez utilisé la méthode .WaitForComplete comme cela, mais cette méthode est appelée par défaut en interne pour chaque méthode que vous exécutez qui interagit avec une page Web. Si vous souhaitez spécifier un temps d'attente générique pour les pages Web de chargement, vous devez utiliser les paramètres de l'objet Watin comme ceci:

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