Des Tests codés de l'INTERFACE utilisateur: COMMENT puis-je définir les propriétés de recherche pour l'enregistrement?

je voulais m'informer sur les Tests Codés de l'INTERFACE utilisateur. J'ai donc créé quelques tests codés de l'interface utilisateur et joué un peu partout.

Mais maintenant je suis à un point que je ne peux pas aider moi-même. J'ai le problème suivant. Quand je fais enregistrer certaines actions à partir d'un dotNet 4.5 programme, l'enregistreur localise les formulaires, boutons, objets textfield et donc sur la via SearchProperties[WinText.PropertyNames.Nom] c'est franchement pas cool.
Imaginez que vous voulez faire un assertation sur un texte de contrôle. Le WinText.PropertyNames.Le nom serait la valeur calculée. Donc, si vous modifiez certaines valeurs d'entrée dans le formulaire qui affectent le calcul, la WinText.PropertyNames.Le nom sera changé pour la nouvelle valeur et la codés de l'interface utilisateur de tester l'habitude de le trouver dans le texte-contrôle avec la variation de la valeur parce qu'il cherchait le WinText.PropertyNames.Nom de la commande au lieu de la WinText.PropertyNames.Nomchamp.

Ma Question est, est-il un moyen de modifier la configuration de la recherche standard de la propriété le générateur de test codé de l'interface utilisateur utilise pour localiser les objets requis???

Parce que c'est un gros effort pour changer cela pour chaque enregistré objet, par la suite.

PS: Im ne parle pas de l' C:\Program Files (x86)\Common Files\microsoft shared\VSTT\11.0\IEPropertyConfiguration.xml qui prend effet que sur ie sites =)

Merci d'avance

Supplémentaires:

Permet de mettre les choses au clair:

Voilà mon code:

public class UIItem100180Window : WinWindow
    {

        public UIItem100180Window(UITestControl searchLimitContainer) : 
                base(searchLimitContainer)
        {
            #region Search Criteria
            this.SearchProperties[WinWindow.PropertyNames.ControlName] = "wert2Praemie12";
            this.WindowTitles.Add("Any Title");
            #endregion
        }

        #region Properties
        public WinText UIItem100180Text
        {
            get
            {
                if ((this.mUIItem100180Text == null))
                {
                    this.mUIItem100180Text = new WinText(this);
                    #region Search Criteria
                    this.mUIItem100180Text.SearchProperties[WinText.PropertyNames.Name] = "1.001,80";
                    this.mUIItem100180Text.WindowTitles.Add("Any Title");
                    #endregion
                }
                return this.mUIItem100180Text;
            }
        }
        #endregion

        #region Fields
        private WinText mUIItem100180Text;
        #endregion
    }

J'ai eu un contrôle parent(UIItem100180Window: WinWindow) qui crée mon Texte-Contrôle(UIITem100180Text: WinText) sur l'INTERFACE utilisateur, qui représente la valeur de mon calcul. Le problème est que les deux ont le même .PropertyNames.Nomchamp =).

Cela signifie que si im va ajouter:

this.mUIItem100180Text.SearchProperties[WinText.PropertyNames.ControlName] = "wert2Praemie12";

il trouvera toujours mes parent-contrôle: WinWindow. Si je ne suis pas à l'ajouter et si la valeur de calcul de changements (peut-être la méthode de calcul a été modifiée,..), et il n'est pas égal à cette.mUIItem100180Text.SearchProperties[WinText.PropertyNames.Nom] = "1.001,80"; le contrôle ne sera pas trouvée et une errorMessage "..contrôle pas trouvé" sera levée.

Plus tard, je vais avoir des problèmes sur cette ligne, la vérification de la Valeur de mon texte-contrôle(WinText):

public void VerifyTextControl()
    {
        #region Variable Declarations
        WinText uIItem100180Text = this.xxx.UIItem100180Window.UIItem100180Text;
        #endregion

        //Verify that the 'DisplayText' property of '1.001,80' label equals '1.001,80'
        Assert.AreEqual("1.001,80", uIItem100180Text.DisplayText, "järhlich muss 1.001,80 € betragen!");
    }

mon uIItem100180Text:WinText est traitée comme WinWindow parce qu'il trouve que mes parent-contrôle quand je suis à la recherche pour le PropertyNames.Nomchamp, comme je l'ai dit tous les deux le même nom. J'ai donc ne peux utiliser la .Texte-méthode, et il se termine par un Message d'erreur.

La meilleure solution est de faire de votre assertation sur le contrôle parent, car il conserve également la valeur du texte-le contrôle et de ne pas avoir de problème comme j'ai.

Peut-être que ce post est utile pour le ppl qui se battent au même point =)

Remarque:

UITestControl->WinControl->WinText

UITestControl->WinControl->WinWindow

  • Je ne suis pas sûr de savoir comment vous pouvez le faire, mais cet article semble intéressant: msdn.microsoft.com/en-us/library/gg269469.aspx
  • Pouvez-vous donner un exemple de code que vous croyez est "cool" et de montrer pourquoi et comment vous pourriez avoir besoin de la changer? En général, si une application testée est changé, les tests doivent aussi être modifiés pour correspondre. Sinon la modification n'a pas été un réel changement, ou les tests sont insuffisants.
  • thx jocke, j'ai déjà lu cet article avant (:
  • le problème est, si vous voulez vérifier les valeurs et la valeur dans le programme les changements d'une certaine manière(par exemple, à 2.000,98), il le jette à chaque fois d'un "contrôle pas trouvé exception" au lieu de "assertfailedException". que mon problème. Son logicaly parce que le contrôle est situé au d.: ce.mUIItem100180Text.SearchProperties[WinText.PropertyNames.Nom] = "1.001,80"; de Sorte qu'il ne sera pas trouvé, si la valeur change et qui me fait chier.
  • J'ai répondu au lien mentionné ci-dessous: stackoverflow.com/a/36649658/2871356
InformationsquelleAutor user2169962 | 2013-05-07