private void generateSequence(
            TranscriptCmdletBase cmdlet,
            System.Collections.Generic.List<IRecordedCodeSequence> recordingsCollection,
            IRecordedCodeSequence codeSequence,
            IWebElement firstElement,
            IWebElement secondElement)
        {
            Recorder.RecordingCollection = recordingsCollection;

            codeSequence = 
                Recorder.RecordCodeSequence(
                    cmdlet,
                    Recorder.RecordingCollection,
                    firstElement,
                    codeSequence);

            if (null != secondElement) {
                codeSequence = 
                    Recorder.RecordCodeSequence(
                        cmdlet,
                        Recorder.RecordingCollection,
                        secondElement,
                        codeSequence);
            }
            
            Recorder.StoreCodeSequenceInCollection(
                cmdlet,
                Recorder.RecordingCollection,
                codeSequence);
        }
示例#2
0
        private void generateSequence(
            TranscriptCmdletBase cmdlet,
            System.Collections.Generic.List <IRecordedCodeSequence> recordingsCollection,
            IRecordedCodeSequence codeSequence,
            IWebElement firstElement,
            IWebElement secondElement)
        {
            Recorder.RecordingCollection = recordingsCollection;

            codeSequence =
                Recorder.RecordCodeSequence(
                    cmdlet,
                    Recorder.RecordingCollection,
                    firstElement,
                    codeSequence);

            if (null != secondElement)
            {
                codeSequence =
                    Recorder.RecordCodeSequence(
                        cmdlet,
                        Recorder.RecordingCollection,
                        secondElement,
                        codeSequence);
            }

            Recorder.StoreCodeSequenceInCollection(
                cmdlet,
                Recorder.RecordingCollection,
                codeSequence);
        }
示例#3
0
        internal static IRecordedCodeSequence RecordWebItem(
            TranscriptCmdletBase cmdlet,
            IRecordedCodeSequence codeSequence,
            IWebElement resultWebElement,
            RecordedWebElement elementItem)
        {
            if (null == codeSequence)
            {
                codeSequence = new RecordedCodeSequence();
            }
            if (null == resultWebElement)
            {
                return(codeSequence);
            }

            try {
                // the previous code sequence should be added to the collection
                // any new web element must start with new code line
                if (0 < codeSequence.Items.Count)
                {
                    codeSequence.ReadyToProduceCode = true;

                    StoreCodeSequenceInCollection(
                        cmdlet,
                        RecordingCollection,
                        codeSequence);
                    codeSequence = new RecordedCodeSequence();
                }

                elementItem = new RecordedWebElement();
                elementItem.UserData.Add("Displayed", resultWebElement.Displayed);
                elementItem.UserData.Add("Enabled", resultWebElement.Enabled);
                elementItem.UserData.Add("Location", resultWebElement.Location);
                elementItem.UserData.Add("Selected", resultWebElement.Selected);
                elementItem.UserData.Add("Size", resultWebElement.Size);
                elementItem.UserData.Add("TagName", resultWebElement.TagName);
                elementItem.UserData.Add("Text", resultWebElement.Text);
                elementItem.UserData.Add("code", CodeGenGetElement);

                // temporarily or not
                //elementItem.Id = resultWebElement.GetAttribute("id");
                //elementItem.Name = resultWebElement.GetAttribute("name");
                //elementItem.ClassName = resultWebElement.GetAttribute("class");

                // CSS

                // XPath // 20121031 - not here !!!

                elementItem.Final = false;
                //elementItem.ItemType = RecordingTypes.Element;
                elementItem.Root = true;             // ??
                codeSequence.Items.Add(elementItem); // 20121031
            }
            catch (Exception eElementItem) {
                Console.WriteLine("not a fake item exception: " + eElementItem.Message);
            }

            return(codeSequence);
        }
示例#4
0
        internal static IRecordedCodeSequence RecordCodeSequence(
            TranscriptCmdletBase cmdlet,
            List <IRecordedCodeSequence> recordingCollection,
            object resultElement,
            IRecordedCodeSequence codeSequence)
        {
            RecordedWebElement elementItem = null;
            RecordedAction     actionItem  = null;
            RecordedData       dataItem    = null;

            var resultWebElement =
                resultElement as IWebElement;
            //RecordedData resultDataCollection =
            //    resultElement as RecordedData;
            var resultDataCollection =
                resultElement as ReadOnlyCollection <object>;

            if (null == codeSequence)
            {
                codeSequence = new RecordedCodeSequence();
            }

            if (null == resultElement)
            {
                return(codeSequence);
            }
//Console.WriteLine(@"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ resultElement.GetType().Name = " + resultElement.GetType().Name);
            if (null != resultWebElement)
            {
                if (IsNotFakeWebElement(resultWebElement))
                {
                    codeSequence =
                        RecordWebItem(cmdlet, codeSequence, resultWebElement, elementItem);
                }
                else     // if (Recorder.isNotFakeWebElement(resultWebElement)) {

                {
                    codeSequence =
                        RecordActionItem(cmdlet, codeSequence, resultWebElement, actionItem);
                } // else
            }

            if (null != resultDataCollection)
            {
                Console.WriteLine(@"////////////////////////////////////////////////////////// null != resultDataCollection " + resultDataCollection.GetType().Name);
                codeSequence =
                    RecordDataItem(cmdlet, codeSequence, resultDataCollection, dataItem);
            }

            cmdlet.WriteVerbose(cmdlet, "RecordCodeSequence");

            return(codeSequence);
        }
 private IRecordedCodeSequence generateDataItem(
     IRecordedCodeSequence codeSequence,
     ReadOnlyCollection<object> dataCollection,
     RecordedData recordingItem)
 {
     IRecordedCodeSequence result =
         Recorder.RecordDataItem(
             (new TranscriptCmdletBase()),
             codeSequence,
             dataCollection,
             recordingItem);
     return result;
 }
 private IRecordedCodeSequence generateWebItem(
     IRecordedCodeSequence codeSequence,
     IWebElement webElement,
     RecordedWebElement recordingItem)
 {
     IRecordedCodeSequence result =
         Recorder.RecordWebItem(
             (new TranscriptCmdletBase()),
             codeSequence,
             webElement,
             recordingItem);
     return result;
 }
        private IRecordedCodeSequence generateDataItem(
            IRecordedCodeSequence codeSequence,
            ReadOnlyCollection <object> dataCollection,
            RecordedData recordingItem)
        {
            IRecordedCodeSequence result =
                Recorder.RecordDataItem(
                    (new TranscriptCmdletBase()),
                    codeSequence,
                    dataCollection,
                    recordingItem);

            return(result);
        }
示例#8
0
        private IRecordedCodeSequence generateWebItem(
            IRecordedCodeSequence codeSequence,
            IWebElement webElement,
            RecordedWebElement recordingItem)
        {
            IRecordedCodeSequence result =
                Recorder.RecordWebItem(
                    (new TranscriptCmdletBase()),
                    codeSequence,
                    webElement,
                    recordingItem);

            return(result);
        }
示例#9
0
        public void CodeSequence_Null_RecordWebItem_Null()
        {
            IRecordedCodeSequence result       = null;
            IRecordedCodeSequence codeSequence = null;
            int         expectedResult         = (new RecordedCodeSequence()).Items.Count;
            IWebElement element = null;

            result =
                generateWebItem(
                    codeSequence,
                    element,
                    (new RecordedWebElement()));
            Assert.AreEqual(expectedResult, result.Items.Count);
        }
示例#10
0
        internal static IRecordedCodeSequence RecordDataItem(
            TranscriptCmdletBase cmdlet,
            IRecordedCodeSequence codeSequence,
            ReadOnlyCollection <object> resultDataCollection,
            RecordedData dataItem)
        {
            if (null == codeSequence)
            {
                codeSequence = new RecordedCodeSequence();
            }

            //if (null == resultDataCollection || 0 == resultDataCollection.UserData.Count) {
            if (null == resultDataCollection || 0 == resultDataCollection.Count)
            {
                return(codeSequence);
            }

            dataItem = new RecordedData();

//int dictionariesCounter = 0;

            var keyKey   = string.Empty;
            var keyValue = string.Empty;

            //codeSequence.Items.Add(resultDataCollection);
            foreach (Dictionary <string, object> data in resultDataCollection)
            {
                try {
                    keyKey = data["key"].ToString();
                } catch {}
                try {
                    if (string.Empty != keyKey)
                    {
                        dataItem.UserData.Add(keyKey, data["value"]);
                    }

                    keyKey   = string.Empty;
                    keyValue = string.Empty;
                } catch {}
            }

            codeSequence.Items.Add(dataItem);

            if (codeSequence.ContainsDataItem())
            {
                codeSequence.ReadyToProduceCode = true;
            }

            return(codeSequence);
        }
示例#11
0
        public void RecordWebItem_Null()
        {
            IRecordedCodeSequence result         = null;
            IRecordedCodeSequence codeSequence   = new RecordedCodeSequence();
            IRecordedCodeSequence expectedResult = codeSequence;
            IWebElement           element        = null;

            result =
                generateWebItem(
                    codeSequence,
                    element,
                    (new RecordedWebElement()));
            Assert.AreEqual(expectedResult, result);
        }
        public void RecordDataItem_DataCollection_Null()
        {
            IRecordedCodeSequence result       = null;
            IRecordedCodeSequence codeSequence = new RecordedCodeSequence();

            ReadOnlyCollection <object> dataCollection = null;
            IRecordedCodeSequence       expectedResult = codeSequence;

            result =
                generateDataItem(
                    codeSequence,
                    dataCollection,
                    (new RecordedData()));
            Assert.AreEqual(expectedResult, result);
        }
        public void CodeSequence_Null_RecordDataItem_Null()
        {
            IRecordedCodeSequence result       = null;
            IRecordedCodeSequence codeSequence = null;
            int expectedResult = (new RecordedCodeSequence()).Items.Count;

            ReadOnlyCollection <object> dataCollection = null;

            result =
                generateDataItem(
                    codeSequence,
                    dataCollection,
                    (new RecordedData()));
            Assert.AreEqual(expectedResult, result.Items.Count);
        }
示例#14
0
        public void CheckCodeSequenceNovelty_RecordingCollection_Null_CodeSequence_Null()
        {
            bool result                 = false;
            bool expectedResult         = false;
            TranscriptCmdletBase cmdlet = new TranscriptCmdletBase();

            Recorder.RecordingCollection = null;
            IRecordedCodeSequence codeSequence = null;

            result =
                Recorder.CheckCodeSequenceNovelty(
                    cmdlet,
                    Recorder.RecordingCollection,
                    codeSequence);
            Assert.AreEqual(expectedResult, result);
        }
示例#15
0
        /// <summary>
        /// Checks the uniqueness of the record and adds to the collection.
        /// </summary>
        /// <param name="recordedElement"></param>
        internal static void StoreCodeSequenceInCollection(
            TranscriptCmdletBase cmdlet,
            List <IRecordedCodeSequence> recordings,
            IRecordedCodeSequence codeSequence)
        {
            cmdlet.WriteVerbose(cmdlet, "StoreCodeSequenceInCollection");
            if (null != recordings)   //  && 0 < recordings.Count) { // :)

            {
                if (CheckCodeSequenceNovelty(cmdlet, recordings, codeSequence))
                {
                    cmdlet.WriteVerbose(cmdlet, "adding code sequence to the collection");
                    recordings.Add(codeSequence);
                }
            }
        }
示例#16
0
        public void RecordWebItem_Text()
        {
            IRecordedCodeSequence result       = null;
            string expectedResult              = "OK";
            IRecordedCodeSequence codeSequence = null;
            IWebElement           element      = new FakeWebElement("button", expectedResult);

            result =
                generateWebItem(
                    codeSequence,
                    element,
                    (new RecordedWebElement()));
            Assert.AreEqual(
                expectedResult,
                ((IRecordedElementItem)result.Items[result.Items.Count - 1]).UserData["Text"]);
        }
示例#17
0
        public void RecordWebItem_Size()
        {
            IRecordedCodeSequence result       = null;
            Size expectedResult                = new Size(1, 1);
            IRecordedCodeSequence codeSequence = null;
            IWebElement           element      = new FakeWebElement("a", "text abc", new Point(2, 2), expectedResult);

            result =
                generateWebItem(
                    codeSequence,
                    element,
                    (new RecordedWebElement()));
            Assert.AreEqual(
                expectedResult,
                ((IRecordedElementItem)result.Items[result.Items.Count - 1]).UserData["Size"]);
        }
        public void RecordActionItem_Click()
        {
            IRecordedCodeSequence result       = null;
            string expectedResult              = Recorder.CodeGenElementClick;
            IRecordedCodeSequence codeSequence = null;
            IWebElement           element      = new FakeWebElement(Recorder.ConstAuxElementClicked, "");

            result =
                generateActionItem(
                    codeSequence,
                    element,
                    (new RecordedAction()));
            Assert.AreEqual(
                expectedResult,
                ((IRecordedActionItem)result.Items[result.Items.Count - 1]).UserData["code"]);
        }
示例#19
0
        public void RecordWebItem_Displayed()
        {
            IRecordedCodeSequence result       = null;
            bool expectedResult                = true;
            IRecordedCodeSequence codeSequence = null;
            IWebElement           element      = new FakeWebElement("a", "text abc", true, false, false);

            result =
                generateWebItem(
                    codeSequence,
                    element,
                    (new RecordedWebElement()));
            Assert.AreEqual(
                expectedResult,
                ((IRecordedElementItem)result.Items[result.Items.Count - 1]).UserData["Displayed"]);
        }
示例#20
0
        public void CodeSequence_Null()
        {
            System.Collections.Generic.List <IRecordedCodeSequence> recordings =
                new System.Collections.Generic.List <IRecordedCodeSequence>();
            IRecordedCodeSequence codeSequence = null;

            Recorder.StoreCodeSequenceInCollection(
                (new TranscriptCmdletBase()),
                recordings,
                codeSequence);



            //Assert.AreEqual(expectedResult, result.Items.Count);
//            Assert.AreEqual(
//                expectedResult,
//                ((RecordedData)Recorder.recordingCollection[Recorder.recordingCollection.Count - 1].Items[
//                    Recorder.recordingCollection[Recorder.recordingCollection.Count - 1].Items.Count - 1]).UserData["code"]);
            Assert.Fail("not implemented");
        }
        public void RecordDataItem_DataCollection_Not_Empty()
        {
            IRecordedCodeSequence result       = null;
            IRecordedCodeSequence codeSequence = new RecordedCodeSequence();

            List <object> list =
                new List <object>();
            Dictionary <string, object> dict1 = new Dictionary <string, object>();

            dict1.Add("key1", "data1");
            list.Add(dict1);
            Dictionary <string, object> dict2 = new Dictionary <string, object>();

            dict2.Add("key2", "data2");
            list.Add(dict2);
            ReadOnlyCollection <object> dataCollection =
                new ReadOnlyCollection <object>(list);

            result =
                generateDataItem(
                    codeSequence,
                    dataCollection,
                    (new RecordedData()));
        }
示例#22
0
        internal static string ConvertCodeSequenceToCode(
            IRecordedCodeSequence codeSequence,
            ILanguagePackage languagePackage,
            string commonData)
        {
            
            string webCode = string.Empty;
            string actCode = string.Empty;
            string dataCode = string.Empty;
            
            codeSequence.Header.Add(languagePackage.RegionOpen);
            
            foreach (IRecordedItem recordedItem in codeSequence.Items) {

                string recordedData = string.Empty;
                string additionalData = string.Empty;
                
                RecordedWebElement webElement = recordedItem as RecordedWebElement;
                RecordedAction actionElement = recordedItem as RecordedAction;
                RecordedData dataElement = recordedItem as RecordedData;

                
                //codeSequence.Data.Add(languagePackage.SingleLineComment);
                
                //if (null != (recordedItem as RecordedWebElement)) {
                if (null != webElement) {
                    //additionalData +=
                    //    "\r\n\r\n#region element's properties";
                    //codeSequence.Data.Add(languagePackage.SingleLineComment);
                    additionalData +=
                        languagePackage.SingleLineComment;
                    additionalData +=
                        //"\r\n# Displayed = ";
                        "Displayed = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Displayed.ToString();
                        //webElement.Displayed;
                        webElement.UserData["Displayed"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Enabled = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Enabled.ToString();
                        //webElement.Enabled;
                        webElement.UserData["Enabled"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Location = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Location.ToString();
                        //webElement.Location;
                        webElement.UserData["Location"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Selected = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Selected.ToString();
                        //webElement.Selected;
                        webElement.UserData["Selected"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Size = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Size.ToString();
                        //webElement.Size;
                        webElement.UserData["Size"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "TagName = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).TagName;
                        //webElement.TagName;
                        webElement.UserData["TagName"];

                    codeSequence.Data.Add(additionalData);
                    additionalData = string.Empty;
                    
                    string tempTextData =
                        //(recordedItem as RecordedWebElement).Text;
                        //webElement.Text;
                        webElement.UserData["Text"].ToString();

                    if (null != tempTextData && string.Empty != tempTextData) {// && tempTextData.Contains("\r\n")) {
                        
                        if (tempTextData.Contains("\r\n")) {

                            additionalData +=
                                //"\r\n# Text = \r\n@\"\r\n";
                                languagePackage.HereStringOpen;
                            additionalData +=
                                tempTextData;
                            additionalData +=
                                //"\r\n\"@";
                                languagePackage.HereStringClose;
                        } else {
                            additionalData +=
                        languagePackage.SingleLineComment;
                            additionalData +=
                                "\r\nText = ";
                            additionalData +=
                                tempTextData;
                        }
                        
                        codeSequence.Data.Add(additionalData);
                        additionalData = string.Empty;
                    }
                    
//                    recordedData +=
//                        //(recordedItem as RecordedWebElement).UserData["code"];
//                        webElement.UserData["code"];

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// here should be better code generation for new cmdlets
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    codeSequence.Code.Add(webElement.UserData["code"].ToString());

                //} else if (null != (recordedItem as RecordedAction)) {
                } else if (null != actionElement) {

//                    recordedData +=
//                        //((RecordedAction)recordedItem).UserData["code"];
//                        actionElement.UserData["code"];
                    
                    codeSequence.Code.Add(actionElement.UserData["code"].ToString());
                    
                //} else if (null != (recordedItem as RecordedData)) {
                } else if (null != dataElement) {

                    additionalData +=
                        "\r\n#";
                    //foreach (string key in (recordedItem as RecordedData).UserData.Keys) {
                    foreach (string key in dataElement.UserData.Keys) {
//Console.WriteLine("dataItem's key = " + key);
                        if ("XPath" == key) {
//Console.WriteLine("XPath = ");
                            additionalData +=
                                "XPath = ";
string sTemp = "XPath = ";
//Console.WriteLine("dataElement.UserData[key].GetType().Name = " + dataElement.UserData[key].GetType().Name);
                            //foreach (var xpathPart in ((ReadOnlyCollection<object>)((RecordedData)recordedItem).UserData[key])) {
                            foreach (var xpathPart in ((ReadOnlyCollection<object>)dataElement.UserData[key])) {
                                additionalData +=
                                    "/";
sTemp += "/";
                                additionalData +=
                                    xpathPart;
sTemp += xpathPart;
                            }
                            
                            codeSequence.Code.Add("\"" + additionalData + "\"");
                            
                            additionalData +=
                                ";";
Console.WriteLine(sTemp);
                        } else {
string sTemp2 = string.Empty;
                            additionalData +=
                                " ";
                            additionalData +=
                                key;
sTemp2 += key;
                            additionalData +=
                                " = ";
sTemp2 += " = ";
                            additionalData +=
                                //(recordedItem as RecordedData).UserData[key];
                                dataElement.UserData[key];
sTemp2 += dataElement.UserData[key];
Console.WriteLine(sTemp2);
                            additionalData +=
                                ";";
                        }
                    }
                    
                    additionalData +=
                        "\r\n#endregion element's properties";
                    
                } else {
Console.WriteLine("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< unused element !!!!!!!!!!!!!!!!!!!!! >>>>>>>>>>>>>>");
                }
                
                commonData += 
                    additionalData;
                commonData +=
                    recordedData;
                
            }
            
            
            commonData +=
                codeSequence.Header;
            foreach (string dataString in codeSequence.Data) {
                commonData +=
                    dataString;
            }
            foreach (string codeString in codeSequence.Code) {
                commonData +=
                    codeString;
            }
            return commonData;
        }
示例#23
0
        internal static IRecordedCodeSequence RecordDataItem(
            TranscriptCmdletBase cmdlet,
            IRecordedCodeSequence codeSequence, 
            ReadOnlyCollection<object> resultDataCollection,
            RecordedData dataItem)
        {
            
            if (null == codeSequence) {
                codeSequence = new RecordedCodeSequence();
            }
            
            //if (null == resultDataCollection || 0 == resultDataCollection.UserData.Count) {
            if (null == resultDataCollection || 0 == resultDataCollection.Count) {
                return codeSequence;
            }
            
            dataItem = new RecordedData();

//int dictionariesCounter = 0;

            string keyKey = string.Empty;
            string keyValue = string.Empty;
            //codeSequence.Items.Add(resultDataCollection);
            foreach (Dictionary<string, object> data in resultDataCollection) {
                try {
                    keyKey = data["key"].ToString();
                } catch {}
                try {
                    if (string.Empty != keyKey) {
                        
                        dataItem.UserData.Add(keyKey, data["value"]);
                        
                    }
                    
                    keyKey = string.Empty;
                    keyValue = string.Empty;
                    
                } catch {}
            }
                
            codeSequence.Items.Add(dataItem);
            
            if (codeSequence.ContainsDataItem()) {
                codeSequence.ReadyToProduceCode = true;
            }

            return codeSequence;
        }
示例#24
0
        internal static IRecordedCodeSequence RecordActionItem(
            TranscriptCmdletBase cmdlet, 
            IRecordedCodeSequence codeSequence, 
            IWebElement resultWebElement, 
            RecordedAction actionItem)
        {
            if (null == codeSequence) {
                codeSequence = new RecordedCodeSequence();
            }
            if (null == resultWebElement) {
                return codeSequence;
            }
            
            actionItem = new RecordedAction();
            string elementId = string.Empty;
            string elementName = string.Empty;
            string elementClass = string.Empty;
            string elementTagName = string.Empty;
            string elementText = string.Empty;
            
            try {
            
                switch (resultWebElement.TagName) {
                    case Recorder.constAuxElementClicked:
                        actionItem.UserData.Add("code", codeGenElementClick);
                        break;
                        
#region temporaly commented
//                            case Recorder.constAuxElementData:
//                                try { elementId = resultWebElement.GetAttribute("id"); } catch {}
//                                try { elementName = resultWebElement.GetAttribute("name"); } catch {}
//                                try { elementClass = resultWebElement.GetAttribute("class"); } catch {}
//                                try { elementTagName = resultWebElement.TagName; } catch {}
//                                try { elementText = resultWebElement.Text; } catch {}
//                                if (string.Empty != elementId && "null" != elementId) {
//                                    actionItem.UserData.Add("code", codeGenIdParameter + elementId + "'");
//                                    actionItem.UserData.Add("comment1", codeGenNameComment + elementName + "'");
//                                    actionItem.UserData.Add("comment2", codeGenClassComment + elementClass + "'");
//                                    actionItem.UserData.Add("comment3", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 2");
//                                } else if (string.Empty != elementName && "null" != elementName) {
//                                    actionItem.UserData.Add("code", codeGenNameParameter + elementName + "'");
//                                    actionItem.UserData.Add("comment1", codeGenClassComment + elementClass + "'");
//                                    actionItem.UserData.Add("comment2", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 3");
//                                } else if (string.Empty != elementClass && "null" != elementClass) {
//                                    actionItem.UserData.Add("code", codeGenClassParameter + elementClass + "'");
//                                    actionItem.UserData.Add("comment1", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 4");
//                                } else if (string.Empty != elementTagName && "null" != elementTagName) {
//                                    actionItem.UserData.Add("code", codeGenTagParameter + elementTagName + "'");
//                                }
//                                break;
//                    case Recorder.constAuxElementSelected:
//                        actionItem.UserData.Add(@"code", @" | Invoke-SeWebElementClick");
//                        break;
#endregion temporaly commented

                    case Recorder.constAuxElementTypedIn:
                        string typedInData = string.Empty;
                        if (null != (typedInData = resultWebElement.GetAttribute("text"))) {
                            
                            // ??
                            
                        } else if (null != (typedInData = resultWebElement.GetAttribute("value"))) {
                            
                            // ??
                        }
                        actionItem.UserData.Add("code", @" | Set-SeWebElementKeys '" + typedInData + "'");
                        break;
                    case Recorder.constAuxElementSelected:
                        // TBD
                        break;
                    case Recorder.constAuxElementData:
                        // nothing to do
                        break;
                }
            }
            catch (Exception eActionItem) {
Console.WriteLine("a fake item exception: " + eActionItem.Message);
            }
            
            // ??
            actionItem.Final = true;
            //
            
            if (codeSequence.ContainsDataItem()) {
                codeSequence.ReadyToProduceCode = true;
            }

            try {
                if (0 == codeSequence.Items.Count) {

                    codeSequence.Items.Add(actionItem);
                } else if (null == (codeSequence.Items[codeSequence.Items.Count - 1] as IRecordedActionItem)) {

                    codeSequence.Items.Add(actionItem);
                } else if (null != ((IRecordedActionItem)codeSequence.Items[codeSequence.Items.Count - 1]).UserData) {
                    if (actionItem.UserData["code"] !=
                        ((IRecordedActionItem)codeSequence.Items[codeSequence.Items.Count - 1]).UserData["code"]) {

                        codeSequence.Items.Add(actionItem);
                    }
                }
            }
            catch (Exception eEliminatingDuplication) {

                codeSequence.Items.Add(actionItem); // ??
            }

            return codeSequence;
        }
示例#25
0
        internal static IRecordedCodeSequence RecordWebItem(
            TranscriptCmdletBase cmdlet,
            IRecordedCodeSequence codeSequence, 
            IWebElement resultWebElement, 
            RecordedWebElement elementItem)
        {
            
            if (null == codeSequence) {
                codeSequence = new RecordedCodeSequence();
            }
            if (null == resultWebElement) {
                return codeSequence;
            }
            
            try {
                
                // the previous code sequence should be added to the collection
                // any new web element must start with new code line
                if (0 < codeSequence.Items.Count) {
                    
                    codeSequence.ReadyToProduceCode = true;
                    
                    Recorder.StoreCodeSequenceInCollection(
                        cmdlet,
                        recordingCollection,
                        codeSequence);
                    codeSequence = new RecordedCodeSequence();
                }

                elementItem = new RecordedWebElement();
                elementItem.UserData.Add("Displayed", resultWebElement.Displayed);
                elementItem.UserData.Add("Enabled", resultWebElement.Enabled);
                elementItem.UserData.Add("Location", resultWebElement.Location);
                elementItem.UserData.Add("Selected", resultWebElement.Selected);
                elementItem.UserData.Add("Size", resultWebElement.Size);
                elementItem.UserData.Add("TagName", resultWebElement.TagName);
                elementItem.UserData.Add("Text", resultWebElement.Text);
                elementItem.UserData.Add("code", codeGenGetElement);
                    
                    // temporarily or not
                    //elementItem.Id = resultWebElement.GetAttribute("id");
                    //elementItem.Name = resultWebElement.GetAttribute("name");
                    //elementItem.ClassName = resultWebElement.GetAttribute("class");
                    
                    // CSS
                    
                    // XPath // 20121031 - not here !!!

                elementItem.Final = false;
                    //elementItem.ItemType = RecordingTypes.Element;
                elementItem.Root = true; // ??
                codeSequence.Items.Add(elementItem); // 20121031

            }
            catch (Exception eElementItem) {
Console.WriteLine("not a fake item exception: " + eElementItem.Message);
            }
            
            return codeSequence;
        }
示例#26
0
        internal static IRecordedCodeSequence RecordCodeSequence(
            TranscriptCmdletBase cmdlet,
            System.Collections.Generic.List<IRecordedCodeSequence> recordingCollection,
            object resultElement,
            IRecordedCodeSequence codeSequence)
        {
            RecordedWebElement elementItem = null;
            RecordedAction actionItem = null;
            RecordedData dataItem = null;
            
            IWebElement resultWebElement =
                resultElement as IWebElement;
            //RecordedData resultDataCollection =
            //    resultElement as RecordedData;
            ReadOnlyCollection<object> resultDataCollection =
                resultElement as ReadOnlyCollection<object>;
            
            if (null == codeSequence) {
                
                codeSequence = new RecordedCodeSequence();
            }
            
            if (null == resultElement) {
                
                return codeSequence;
            }
//Console.WriteLine(@"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ resultElement.GetType().Name = " + resultElement.GetType().Name);
            if (null != resultWebElement) {

                if (Recorder.isNotFakeWebElement(resultWebElement)) {

                    codeSequence =
                        Recorder.RecordWebItem(cmdlet, codeSequence, resultWebElement, elementItem);
    
                } else { // if (Recorder.isNotFakeWebElement(resultWebElement)) {

                    codeSequence =
                        Recorder.RecordActionItem(cmdlet, codeSequence, resultWebElement, actionItem);
    
                } // else
                
                
            }

            if (null != resultDataCollection) {
Console.WriteLine(@"////////////////////////////////////////////////////////// null != resultDataCollection " + resultDataCollection.GetType().Name);
                codeSequence =
                    Recorder.RecordDataItem(cmdlet, codeSequence, resultDataCollection, dataItem);
            }

            cmdlet.WriteVerbose(cmdlet, "RecordCodeSequence");

            return codeSequence;
        }
示例#27
0
        internal static bool CheckCodeSequenceNovelty(
            TranscriptCmdletBase cmdlet,
            List<IRecordedCodeSequence> recordings, 
            IRecordedCodeSequence codeSequence)
        {
            bool result = false;
            
            if (null == recordings) {
                return result;
            }
            if (null == codeSequence) {
                return result;
            }
            if (0 == codeSequence.Items.Count) {
                return result;
            }
            if (0 == recordings.Count) {
                return true;
            }
            
            IRecordedCodeSequence lastCollectedCodeSeq = 
                recordings[recordings.Count - 1];
            
            if (lastCollectedCodeSeq.Items.Count == codeSequence.Items.Count) {
                
                for (int i = 0; i < codeSequence.Items.Count; i++) {

                    if (codeSequence.Items[i].ItemType == lastCollectedCodeSeq.Items[i].ItemType) {
                        
                        switch (codeSequence.Items[i].GetType().Name) {
                            case "RecordedWebElement":
                                RecordedWebElement eltWebToBeAdded =
                                    (codeSequence.Items[i] as RecordedWebElement);
                                RecordedWebElement eltWebThatAlreadyCollected =
                                    (lastCollectedCodeSeq.Items[i] as RecordedWebElement);
                                if (null != eltWebToBeAdded && null != eltWebThatAlreadyCollected) {
                                    /*
                                    foreach (string key in eltWebToBeAdded.UserData.Keys)
                                    {
                                        if (eltWebToBeAdded.UserData[key] != eltWebThatAlreadyCollected.UserData[key])
                                        {
                                            return true;
                                        }
                                    }
                                    */

                                    if (eltWebToBeAdded.UserData.Keys.Any(key => eltWebToBeAdded.UserData[key] != eltWebThatAlreadyCollected.UserData[key]))
                                    {
                                        return true;
                                    }
                                }
                                break;
                            case "RecordedAction":
                                RecordedAction eltActToBeAdded =
                                    (codeSequence.Items[i] as RecordedAction);
                                RecordedAction eltActThatAlreadyCollected =
                                    (lastCollectedCodeSeq.Items[i] as RecordedAction);
                                if (null != eltActToBeAdded && null != eltActThatAlreadyCollected) {
                                    /*
                                    foreach (string key in eltActToBeAdded.UserData.Keys)
                                    {
                                        if (eltActToBeAdded.UserData[key] != eltActThatAlreadyCollected.UserData[key])
                                        {
                                            return true;
                                        }
                                    }
                                    */

                                    if (eltActToBeAdded.UserData.Keys.Any(key => eltActToBeAdded.UserData[key] != eltActThatAlreadyCollected.UserData[key]))
                                    {
                                        return true;
                                    }
                                }
                                break;
                            case "RecordedData":
                                RecordedData eltDataToBeAdded =
                                    (codeSequence.Items[i] as RecordedData);
                                RecordedData eltDataThatAlreadyCollected =
                                    (lastCollectedCodeSeq.Items[i] as RecordedData);
                                if (null != eltDataToBeAdded && null != eltDataThatAlreadyCollected) {
                                    /*
                                    foreach (string key in eltDataToBeAdded.UserData.Keys)
                                    {
                                        if (eltDataToBeAdded.UserData[key] != eltDataThatAlreadyCollected.UserData[key])
                                        {
                                            return true;
                                        }
                                    }
                                    */

                                    if (eltDataToBeAdded.UserData.Keys.Any(key => eltDataToBeAdded.UserData[key] != eltDataThatAlreadyCollected.UserData[key]))
                                    {
                                        return true;
                                    }
                                }
                                break;
                            default:
                                
                                break;
                        }

#region commented 20121031
//                        RecordedWebElement elementToBeAdded =
//                            (codeSequence.Items[i] as RecordedWebElement);
//                        RecordedWebElement elementThatAlreadyCollected =
//                            (lastCollectedCodeSeq.Items[i] as RecordedWebElement);
//                        if (null != elementToBeAdded && null != elementThatAlreadyCollected) {
//
//                            if (elementToBeAdded.UserData != elementThatAlreadyCollected.UserData) {
//Console.WriteLine("return here!");
//                                return true;
//                            }
//                        } else {
//                            RecordedAction actionToBeAdded =
//                                (codeSequence.Items[i] as RecordedAction);
//                            RecordedAction actionThatAlreadyCollected =
//                                (lastCollectedCodeSeq.Items[i] as RecordedAction);
//                            if (null != actionToBeAdded && null != actionThatAlreadyCollected) {
//
//                                if (actionToBeAdded.UserData != actionThatAlreadyCollected.UserData) {
//
//                                    foreach (string key in actionToBeAdded.UserData.Keys) {
//                                        if (actionToBeAdded.UserData[key] != actionThatAlreadyCollected.UserData[key]) {
//Console.WriteLine("return here! 2");
//                                            return true;
//                                        }
//                                    }
//                                }
//                            }
//                        } // else
#endregion commented 20121031
                    } else { // if (codeSequence.Items[i].ItemType == lastCollectedCodeSeq.Items[i].ItemType) {
                        return true;
                    }
                } // for (int i = 0; i < codeSequence.Items.Count; i++) {
                
            } else { // if (lastCollectedCodeSeq.Items.Count == codeSequence.Items.Count) {
                return true;
            }
            //}
            
            return result;
        }
示例#28
0
        /// <summary>
        /// Checks the uniqueness of the record and adds to the collection.
        /// </summary>
        /// <param name="recordedElement"></param>
        internal static void StoreCodeSequenceInCollection(
            TranscriptCmdletBase cmdlet,
            System.Collections.Generic.List<IRecordedCodeSequence> recordings,
            IRecordedCodeSequence codeSequence)
        {
            cmdlet.WriteVerbose(cmdlet, "StoreCodeSequenceInCollection");
            if (null != recordings) { //  && 0 < recordings.Count) { // :)

                if (CheckCodeSequenceNovelty(cmdlet, recordings, codeSequence)) {

                    cmdlet.WriteVerbose(cmdlet, "adding code sequence to the collection");
                    recordings.Add(codeSequence);
                    
                }
            } 

        }
示例#29
0
        internal static bool CheckCodeSequenceNovelty(
            TranscriptCmdletBase cmdlet,
            List <IRecordedCodeSequence> recordings,
            IRecordedCodeSequence codeSequence)
        {
            var result = false;

            if (null == recordings)
            {
                return(result);
            }
            if (null == codeSequence)
            {
                return(result);
            }
            if (0 == codeSequence.Items.Count)
            {
                return(result);
            }
            if (0 == recordings.Count)
            {
                return(true);
            }

            var lastCollectedCodeSeq =
                recordings[recordings.Count - 1];

            if (lastCollectedCodeSeq.Items.Count == codeSequence.Items.Count)
            {
                for (var i = 0; i < codeSequence.Items.Count; i++)
                {
                    if (codeSequence.Items[i].ItemType == lastCollectedCodeSeq.Items[i].ItemType)
                    {
                        switch (codeSequence.Items[i].GetType().Name)
                        {
                        case "RecordedWebElement":
                            var eltWebToBeAdded =
                                (codeSequence.Items[i] as RecordedWebElement);
                            var eltWebThatAlreadyCollected =
                                (lastCollectedCodeSeq.Items[i] as RecordedWebElement);
                            if (null != eltWebToBeAdded && null != eltWebThatAlreadyCollected)
                            {
                                /*
                                 * foreach (string key in eltWebToBeAdded.UserData.Keys)
                                 * {
                                 *  if (eltWebToBeAdded.UserData[key] != eltWebThatAlreadyCollected.UserData[key])
                                 *  {
                                 *      return true;
                                 *  }
                                 * }
                                 */

                                if (eltWebToBeAdded.UserData.Keys.Any(key => eltWebToBeAdded.UserData[key] != eltWebThatAlreadyCollected.UserData[key]))
                                {
                                    return(true);
                                }
                            }
                            break;

                        case "RecordedAction":
                            var eltActToBeAdded =
                                (codeSequence.Items[i] as RecordedAction);
                            var eltActThatAlreadyCollected =
                                (lastCollectedCodeSeq.Items[i] as RecordedAction);
                            if (null != eltActToBeAdded && null != eltActThatAlreadyCollected)
                            {
                                /*
                                 * foreach (string key in eltActToBeAdded.UserData.Keys)
                                 * {
                                 *  if (eltActToBeAdded.UserData[key] != eltActThatAlreadyCollected.UserData[key])
                                 *  {
                                 *      return true;
                                 *  }
                                 * }
                                 */

                                if (eltActToBeAdded.UserData.Keys.Any(key => eltActToBeAdded.UserData[key] != eltActThatAlreadyCollected.UserData[key]))
                                {
                                    return(true);
                                }
                            }
                            break;

                        case "RecordedData":
                            var eltDataToBeAdded =
                                (codeSequence.Items[i] as RecordedData);
                            var eltDataThatAlreadyCollected =
                                (lastCollectedCodeSeq.Items[i] as RecordedData);
                            if (null != eltDataToBeAdded && null != eltDataThatAlreadyCollected)
                            {
                                /*
                                 * foreach (string key in eltDataToBeAdded.UserData.Keys)
                                 * {
                                 *  if (eltDataToBeAdded.UserData[key] != eltDataThatAlreadyCollected.UserData[key])
                                 *  {
                                 *      return true;
                                 *  }
                                 * }
                                 */

                                if (eltDataToBeAdded.UserData.Keys.Any(key => eltDataToBeAdded.UserData[key] != eltDataThatAlreadyCollected.UserData[key]))
                                {
                                    return(true);
                                }
                            }
                            break;

                        default:

                            break;
                        }

                        #region commented 20121031
//                        RecordedWebElement elementToBeAdded =
//                            (codeSequence.Items[i] as RecordedWebElement);
//                        RecordedWebElement elementThatAlreadyCollected =
//                            (lastCollectedCodeSeq.Items[i] as RecordedWebElement);
//                        if (null != elementToBeAdded && null != elementThatAlreadyCollected) {
//
//                            if (elementToBeAdded.UserData != elementThatAlreadyCollected.UserData) {
//Console.WriteLine("return here!");
//                                return true;
//                            }
//                        } else {
//                            RecordedAction actionToBeAdded =
//                                (codeSequence.Items[i] as RecordedAction);
//                            RecordedAction actionThatAlreadyCollected =
//                                (lastCollectedCodeSeq.Items[i] as RecordedAction);
//                            if (null != actionToBeAdded && null != actionThatAlreadyCollected) {
//
//                                if (actionToBeAdded.UserData != actionThatAlreadyCollected.UserData) {
//
//                                    foreach (string key in actionToBeAdded.UserData.Keys) {
//                                        if (actionToBeAdded.UserData[key] != actionThatAlreadyCollected.UserData[key]) {
//Console.WriteLine("return here! 2");
//                                            return true;
//                                        }
//                                    }
//                                }
//                            }
//                        } // else
                        #endregion commented 20121031
                    }
                    else     // if (codeSequence.Items[i].ItemType == lastCollectedCodeSeq.Items[i].ItemType) {
                    {
                        return(true);
                    }
                } // for (int i = 0; i < codeSequence.Items.Count; i++) {
            }
            else     // if (lastCollectedCodeSeq.Items.Count == codeSequence.Items.Count) {
            {
                return(true);
            }
            //}

            return(result);
        }
示例#30
0
        internal static IRecordedCodeSequence RecordActionItem(
            TranscriptCmdletBase cmdlet,
            IRecordedCodeSequence codeSequence,
            IWebElement resultWebElement,
            RecordedAction actionItem)
        {
            if (null == codeSequence)
            {
                codeSequence = new RecordedCodeSequence();
            }
            if (null == resultWebElement)
            {
                return(codeSequence);
            }

            actionItem = new RecordedAction();
            var elementId      = string.Empty;
            var elementName    = string.Empty;
            var elementClass   = string.Empty;
            var elementTagName = string.Empty;
            var elementText    = string.Empty;

            try {
                switch (resultWebElement.TagName)
                {
                case ConstAuxElementClicked:
                    actionItem.UserData.Add("code", CodeGenElementClick);
                    break;

                    #region temporaly commented
//                            case Recorder.constAuxElementData:
//                                try { elementId = resultWebElement.GetAttribute("id"); } catch {}
//                                try { elementName = resultWebElement.GetAttribute("name"); } catch {}
//                                try { elementClass = resultWebElement.GetAttribute("class"); } catch {}
//                                try { elementTagName = resultWebElement.TagName; } catch {}
//                                try { elementText = resultWebElement.Text; } catch {}
//                                if (string.Empty != elementId && "null" != elementId) {
//                                    actionItem.UserData.Add("code", codeGenIdParameter + elementId + "'");
//                                    actionItem.UserData.Add("comment1", codeGenNameComment + elementName + "'");
//                                    actionItem.UserData.Add("comment2", codeGenClassComment + elementClass + "'");
//                                    actionItem.UserData.Add("comment3", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 2");
//                                } else if (string.Empty != elementName && "null" != elementName) {
//                                    actionItem.UserData.Add("code", codeGenNameParameter + elementName + "'");
//                                    actionItem.UserData.Add("comment1", codeGenClassComment + elementClass + "'");
//                                    actionItem.UserData.Add("comment2", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 3");
//                                } else if (string.Empty != elementClass && "null" != elementClass) {
//                                    actionItem.UserData.Add("code", codeGenClassParameter + elementClass + "'");
//                                    actionItem.UserData.Add("comment1", codeGenTagParameter + elementTagName + "'");
////    Console.WriteLine("\"code\" added 4");
//                                } else if (string.Empty != elementTagName && "null" != elementTagName) {
//                                    actionItem.UserData.Add("code", codeGenTagParameter + elementTagName + "'");
//                                }
//                                break;
//                    case Recorder.constAuxElementSelected:
//                        actionItem.UserData.Add(@"code", @" | Invoke-SeWebElementClick");
//                        break;
                    #endregion temporaly commented

                case ConstAuxElementTypedIn:
                    var typedInData = string.Empty;
                    if (null != (typedInData = resultWebElement.GetAttribute("text")))
                    {
                        // ??
                    }
                    else if (null != (typedInData = resultWebElement.GetAttribute("value")))
                    {
                        // ??
                    }
                    actionItem.UserData.Add("code", @" | Set-SeWebElementKeys '" + typedInData + "'");
                    break;

                case ConstAuxElementSelected:
                    // TBD
                    break;

                case ConstAuxElementData:
                    // nothing to do
                    break;
                }
            }
            catch (Exception eActionItem) {
                Console.WriteLine("a fake item exception: " + eActionItem.Message);
            }

            // ??
            actionItem.Final = true;
            //

            if (codeSequence.ContainsDataItem())
            {
                codeSequence.ReadyToProduceCode = true;
            }

            try {
                if (0 == codeSequence.Items.Count)
                {
                    codeSequence.Items.Add(actionItem);
                }
                else if (null == (codeSequence.Items[codeSequence.Items.Count - 1] as IRecordedActionItem))
                {
                    codeSequence.Items.Add(actionItem);
                }
                else if (null != ((IRecordedActionItem)codeSequence.Items[codeSequence.Items.Count - 1]).UserData)
                {
                    if (actionItem.UserData["code"] !=
                        ((IRecordedActionItem)codeSequence.Items[codeSequence.Items.Count - 1]).UserData["code"])
                    {
                        codeSequence.Items.Add(actionItem);
                    }
                }
            }
            catch (Exception eEliminatingDuplication) {
                codeSequence.Items.Add(actionItem); // ??
            }

            return(codeSequence);
        }
示例#31
0
        internal static string ConvertCodeSequenceToCode(
            IRecordedCodeSequence codeSequence,
            ILanguagePackage languagePackage,
            string commonData)
        {
            var webCode  = string.Empty;
            var actCode  = string.Empty;
            var dataCode = string.Empty;

            codeSequence.Header.Add(languagePackage.RegionOpen);

            foreach (var recordedItem in codeSequence.Items)
            {
                var recordedData   = string.Empty;
                var additionalData = string.Empty;

                var webElement    = recordedItem as RecordedWebElement;
                var actionElement = recordedItem as RecordedAction;
                var dataElement   = recordedItem as RecordedData;


                //codeSequence.Data.Add(languagePackage.SingleLineComment);

                //if (null != (recordedItem as RecordedWebElement)) {
                if (null != webElement)
                {
                    //additionalData +=
                    //    "\r\n\r\n#region element's properties";
                    //codeSequence.Data.Add(languagePackage.SingleLineComment);
                    additionalData +=
                        languagePackage.SingleLineComment;
                    additionalData +=
                        //"\r\n# Displayed = ";
                        "Displayed = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Displayed.ToString();
                        //webElement.Displayed;
                        webElement.UserData["Displayed"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Enabled = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Enabled.ToString();
                        //webElement.Enabled;
                        webElement.UserData["Enabled"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Location = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Location.ToString();
                        //webElement.Location;
                        webElement.UserData["Location"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Selected = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Selected.ToString();
                        //webElement.Selected;
                        webElement.UserData["Selected"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "Size = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).Size.ToString();
                        //webElement.Size;
                        webElement.UserData["Size"];
                    additionalData +=
                        languagePackage.Separator;
                    additionalData +=
                        "TagName = ";
                    additionalData +=
                        //(recordedItem as RecordedWebElement).TagName;
                        //webElement.TagName;
                        webElement.UserData["TagName"];

                    codeSequence.Data.Add(additionalData);
                    additionalData = string.Empty;

                    var tempTextData =
                        //(recordedItem as RecordedWebElement).Text;
                        //webElement.Text;
                        webElement.UserData["Text"].ToString();

                    if (null != tempTextData && string.Empty != tempTextData)  // && tempTextData.Contains("\r\n")) {

                    {
                        if (tempTextData.Contains("\r\n"))
                        {
                            additionalData +=
                                //"\r\n# Text = \r\n@\"\r\n";
                                languagePackage.HereStringOpen;
                            additionalData +=
                                tempTextData;
                            additionalData +=
                                //"\r\n\"@";
                                languagePackage.HereStringClose;
                        }
                        else
                        {
                            additionalData +=
                                languagePackage.SingleLineComment;
                            additionalData +=
                                "\r\nText = ";
                            additionalData +=
                                tempTextData;
                        }

                        codeSequence.Data.Add(additionalData);
                        additionalData = string.Empty;
                    }

//                    recordedData +=
//                        //(recordedItem as RecordedWebElement).UserData["code"];
//                        webElement.UserData["code"];

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// here should be better code generation for new cmdlets
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    codeSequence.Code.Add(webElement.UserData["code"].ToString());

                    //} else if (null != (recordedItem as RecordedAction)) {
                }
                else if (null != actionElement)
                {
//                    recordedData +=
//                        //((RecordedAction)recordedItem).UserData["code"];
//                        actionElement.UserData["code"];

                    codeSequence.Code.Add(actionElement.UserData["code"].ToString());

                    //} else if (null != (recordedItem as RecordedData)) {
                }
                else if (null != dataElement)
                {
                    additionalData +=
                        "\r\n#";
                    //foreach (string key in (recordedItem as RecordedData).UserData.Keys) {
                    foreach (var key in dataElement.UserData.Keys)
                    {
//Console.WriteLine("dataItem's key = " + key);
                        if ("XPath" == key)
                        {
//Console.WriteLine("XPath = ");
                            additionalData +=
                                "XPath = ";
                            var sTemp = "XPath = ";
//Console.WriteLine("dataElement.UserData[key].GetType().Name = " + dataElement.UserData[key].GetType().Name);
                            //foreach (var xpathPart in ((ReadOnlyCollection<object>)((RecordedData)recordedItem).UserData[key])) {
                            foreach (var xpathPart in ((ReadOnlyCollection <object>)dataElement.UserData[key]))
                            {
                                additionalData +=
                                    "/";
                                sTemp          += "/";
                                additionalData +=
                                    xpathPart;
                                sTemp += xpathPart;
                            }

                            codeSequence.Code.Add("\"" + additionalData + "\"");

                            additionalData +=
                                ";";
                            Console.WriteLine(sTemp);
                        }
                        else
                        {
                            var sTemp2 = string.Empty;
                            additionalData +=
                                " ";
                            additionalData +=
                                key;
                            sTemp2         += key;
                            additionalData +=
                                " = ";
                            sTemp2         += " = ";
                            additionalData +=
                                //(recordedItem as RecordedData).UserData[key];
                                dataElement.UserData[key];
                            sTemp2 += dataElement.UserData[key];
                            Console.WriteLine(sTemp2);
                            additionalData +=
                                ";";
                        }
                    }

                    additionalData +=
                        "\r\n#endregion element's properties";
                }
                else
                {
                    Console.WriteLine("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< unused element !!!!!!!!!!!!!!!!!!!!! >>>>>>>>>>>>>>");
                }

                commonData +=
                    additionalData;
                commonData +=
                    recordedData;
            }


            commonData +=
                codeSequence.Header;
            foreach (var dataString in codeSequence.Data)
            {
                commonData +=
                    dataString;
            }
            foreach (var codeString in codeSequence.Code)
            {
                commonData +=
                    codeString;
            }
            return(commonData);
        }