2015-08-25 1 views
0

J'exécute des tests de navigateur IE automatisés en utilisant Watin 2.1.0. Ils fonctionnent correctement sur ma machine locale mais je suis en train de les amener à courir sur ma machine de construction de TeamCity, mais je reçois cette erreur lorsque les tests sont exécutés au même point particulier dans chaque essai:Les tests Watin ne fonctionnent pas sur la machine de construction TeamCity

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

Le trace de pile complète:

at mshtml.HTMLWindow2Class.IHTMLWindow2_execScript(String code, String language) 
    at WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(String scriptCode, String language, IHTMLWindow2 window) 
    at WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(String scriptCode, String language, IHTMLWindow2 window) 
    at WatiN.Core.Native.InternetExplorer.IEElement.GetJavaScriptElementReference() 
    at WatiN.Core.Native.InternetExplorer.IEFireEventHandler.CreateJavaScriptFireEventCode(NameValueCollection eventObjectProperties, String eventName) 
    at WatiN.Core.Native.InternetExplorer.IEFireEventHandler.FireEvent(String eventName, NameValueCollection eventProperties, Boolean noWait) 
    at WatiN.Core.Native.InternetExplorer.IEElement.FireEvent(String eventName, NameValueCollection eventProperties) 
    at WatiN.Core.Element.FireEvent(String eventName, Boolean waitForComplete, NameValueCollection eventProperties) 
    at WatiN.Core.Element.FireEvent(String eventName) 
    at WatiN.Core.Element.Focus() 

Je ne suis pas exactement sûr de ce qui se passe ici. Le compte utilisateur sur lequel les tests sont exécutés est un administrateur et j'ai défini les sites utilisés comme sites de confiance dans les paramètres IE. Je suis sûr que c'est un paramètre dans TeamCity que j'ai manqué car ils travaillent localement mais pas sur le serveur de construction TeamCity.

Toute aide serait appréciée.

EDIT: Nous avons trois agents Team Ville exécutant plusieurs projets avec un comme l'hôte Ceci est l'onglet Connexion d'un des agents de construction qui ne sont pas l'hôte:

enter image description here

Le La case "Autoriser le service à interagir avec le bureau" est cochée, mais les Watins ne fonctionnent toujours pas.

Sur la machine hôte:

enter image description here

Cependant, les Watins ne fonctionnent pas sur cette machine soit. Les Watins exécutent également IE en tant que processus utilisant un compte d'utilisateur différent. Ainsi, l'agent de compilation s'exécute sous le compte d'utilisateur "A" et, dans le cadre des tests watin, IE est exécuté sous un compte d'utilisateur "B".

Cette information pourrait être plus pertinente pour trouver une solution. Merci!

Répondre

0

Vous devez configurer le service de l'agent de construction sur "Autoriser l'interaction du service avec le bureau" plus que probablement.

+0

Comment faire? – Ben

+0

Accédez à votre gestionnaire de services (start -> run -> services.msc) sur la machine sur laquelle l'agent de build est en cours d'exécution. trouver le service "Team City Build Agent", ouvrez les propriétés. Dans l'onglet "Connexion", cochez "Autoriser le service à interagir avec le bureau", appliquer les modifications – kcamp

+0

La case "Autoriser le service à interagir avec le bureau" a déjà été cochée. Voulez-vous dire un-vérifier cela? – Ben

0

Un des MS met à jour il y a quelques mois ont bloqué l'accès pour exécuter des scripts donc pourquoi vous obtenez:

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 

Vérifiez ce chat here qui parle à ce sujet. C'est l'une de ces «solutions» qui brisent des choses qui durent depuis des années. Vous devriez trouver une alternative à l'utilisation de scripts (pas toujours possible ou aussi précis que lors de l'exécution d'un script).

+0

Merci pour l'arrière-plan sur la question, je n'avais aucune idée que c'était le cas. J'ai fini par changer les scripts de test. À l'origine, j'avais utilisé SendKeys.SendWait(); pour remplir les champs de texte et fournir des entrées de touches, mais cela a causé des problèmes. J'ai remplacé cela en définissant la valeur du champ de texte et en activant manuellement la méthode javascript de l'événement onChange. – Ben

+0

Je fais la même chose depuis un certain temps maintenant à cause de ce problème.Dommage que MS l'ait "réparée" :) – ProgrammerV5