2010-11-08 23 views
2

Je reçois errros de UnauthorizedAccessException lors de l'exécution des tests en utilisant NUnit et Watin:erreurs Watin UnauthorizedAccessException

Test Test.IndexTests.Can_Do' failed: WatiN.Core.Exceptions.ElementNotFoundException : Could not find INPUT (hidden) or INPUT (password) or INPUT (text) or INPUT (textarea) or TEXTAREA element tag matching criteria: Attribute 'name' equals 'q' at http://www.google.com/ (inner exception: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))) 
    ----> System.UnauthorizedAccessException : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
    at WatiN.Core.Element.get_NativeElement() 
    at WatiN.Core.Element.GetAttributeValueImpl(String attributeName) 
    at WatiN.Core.Component.GetAttributeValue(String attributeName) 
    at WatiN.Core.Element.get_Id() 
    at WatiN.Core.Element.get_IdOrName() 
    at WatiN.Core.TextField.TypeText(String value) 
    Class1.cs(23,0): at Tests.Can_Do() 
    --UnauthorizedAccessException 
    at mshtml.IHTMLElementCollection.tags(Object tagName) 
    at WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsByTag(String tagName) 
    at WatiN.Core.NativeElementFinder.FindElementsByTag(String tagName) 
    at WatiN.Core.NativeElementFinder.<FindElementByTags>d__0.MoveNext() 
    at WatiN.Core.ElementFinder.FindFirst() 
    at WatiN.Core.Element.FindNativeElement() 
    at WatiN.Core.Element.get_Exists() 
    at WatiN.Core.Element.<>c__DisplayClass9.<WaitUntilExistsOrNot>b__8() 
    at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try[T](DoFunc`1 func) 

0 passed, 1 failed, 0 skipped, took 43.44 seconds (NUnit 2.5.5). 

Je ne peux pas sembler trouver quoi que ce soit via google et je me demandais si quelqu'un a eu un problème similaire?

Vive

Répondre

1

J'ai eu le même problème à des positions aléatoires dans le test. Je courais déjà dans la zone de confiance.

Ajout d'un

System.Threading.Thread.Sleep(200); 

à chaque emplacement de problème « résolu » le problème ou tout au moins ses symptômes pour moi. Au moins, je ne reçois plus l'erreur et je suis capable d'exécuter les tests.

Il semble que ce soit une condition de concurrence.

1

Il peut se produire lorsque le code HTML est pas entièrement chargée Vous pouvez ajouter du sommeil ou ajouter l'attente pour la commande complète

ie.WaitForComlete(); 

La meilleure façon est d'attraper l'exception spécifique et essayer à nouveau:

 try 
    { 
     //your code 
    } 
    catch (UnauthorizedAccessException) 
    { 

    } 
2

La solution pour moi était de désinstaller le logiciel de sécurité du navigateur Trusteer Rapport que ma banque propose. J'avais oublié qu'il était même installé.