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); }
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); }
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); }
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); }
private IRecordedCodeSequence generateWebItem( IRecordedCodeSequence codeSequence, IWebElement webElement, RecordedWebElement recordingItem) { IRecordedCodeSequence result = Recorder.RecordWebItem( (new TranscriptCmdletBase()), codeSequence, webElement, recordingItem); return(result); }
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); }
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); }
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); }
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); }
/// <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); } } }
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"]); }
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"]); }
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"]); }
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())); }
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; }
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; }
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; }
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; }
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; }
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; }
/// <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); } } }
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); }
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); }
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); }