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); }
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); }
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 CheckCodeSequenceNovelty_RecordingCollection_Null_CodeSequence_Empty() { bool result = false; bool expectedResult = false; TranscriptCmdletBase cmdlet = new TranscriptCmdletBase(); Recorder.RecordingCollection = null; IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); result = Recorder.CheckCodeSequenceNovelty( cmdlet, Recorder.RecordingCollection, codeSequence); 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 RecordCodeSequency_Non_Empty_CodeSequence_RecordedAction() { IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); codeSequence.Items.Add((new RecordedAction())); generateSequence( (new TranscriptCmdletBase()), (new System.Collections.Generic.List<IRecordedCodeSequence>()), codeSequence, (new FakeWebElement("recclicked", string.Empty)), null); Assert.AreEqual( Recorder.codeGenElementClick, ((RecordedAction)Recorder.recordingCollection[Recorder.recordingCollection.Count - 1].Items[codeSequence.Items.Count - 1]).UserData["code"]); // ? }
public void Collection_Null() { System.Collections.Generic.List<IRecordedCodeSequence> recordings = null; IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); 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"); }
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 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; }
public static void RecordActions(TranscriptCmdletBase cmdlet, IJSRecorder jsRecorder, RecorderLanguages languageCode) //, bool waitForElement) { System.DateTime startTime = System.DateTime.Now; recordingCollection = new System.Collections.Generic.List<IRecordedCodeSequence>(); IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); string codeString = string.Empty; ReadOnlyCollection<string> currentWindowHandles = //CurrentData.CurrentWebDriver.WindowHandles; new ReadOnlyCollection<string>((new System.Collections.Generic.List<string>())); if (null != CurrentData.CurrentWebDriver && null != CurrentData.CurrentWebDriver.WindowHandles) { currentWindowHandles = CurrentData.CurrentWebDriver.WindowHandles; } do { jsRecorder.MakeJSInjection(cmdlet); try { var scriptResults = jsRecorder.GetRecordedResults(); if (null != scriptResults) { // && scriptResults is object[] && 0 < ((object[])scriptResults).Length) { foreach (var singleResult in scriptResults) { codeSequence = Recorder.RecordCodeSequence( cmdlet, recordingCollection, singleResult, codeSequence); if (Recorder.CodeSequenceCompleted) { Recorder.NotifyCodeGathered(); codeString = Recorder.ConvertCodeSequenceToCode( codeSequence, selectLanguage(languageCode), codeString); Console.WriteLine("codeString:"); Console.WriteLine(codeString); Recorder.CodeSequenceCompleted = false; } if (null != (singleResult as IWebElement)) { IWebElement resultElement = singleResult as IWebElement; if (Recorder.isNotFakeWebElement(resultElement)) { cmdlet.WriteVerbose(cmdlet, "element is not a fake"); if (cmdlet.PassThru) { cmdlet.WriteVerbose(cmdlet, "outputting the object"); cmdlet.WriteObject(cmdlet, resultElement); } else if (Preferences.Highlight) { cmdlet.WriteVerbose(cmdlet, "highlighting the object"); SeHelper.Highlight(resultElement); } } } #region commented 20101031 // else if (null != (singleResult as ReadOnlyCollection<object>)){ ////Console.WriteLine("0010: singleResult type is " + singleResult.GetType().Name); // RecordedData recData = new RecordedData(); // ReadOnlyCollection<object> elementData = singleResult as ReadOnlyCollection<object>; ////Console.WriteLine("0012: Count = " + elementData.Count.ToString()); // ////try { Console.WriteLine("000001: " + elementData); } catch {} ////try { cmdlet.WriteObject(cmdlet, "000002: " + elementData); } catch {} ////try { Console.WriteLine("000003: " + elementData[0]); } catch {} ////try { cmdlet.WriteObject("000004: " + elementData[0]); } catch {} ////if (0 < elementData.Count) { //// foreach (var item1 in elementData) { //// cmdlet.WriteObject(cmdlet, item1.GetType().Name); //// cmdlet.WriteObject(cmdlet, item1); //// } ////} // //// Dictionary<string, object> elementData2 = singleResult as Dictionary<string, object>; ////if (null != elementData2) { //// Console.WriteLine("0012-2: Count = " + elementData2.Keys.Count.ToString()); //// foreach (KeyValuePair<string, object> elementDataItem in elementData) { //// Console.WriteLine("elementDataItem[elementDataItem.Keys[]] = " + elementDataItem.Key + "\t" + elementDataItem.Value.ToString()); //// } ////} //// foreach (var elementDataItem in elementData) { ////Console.WriteLine("0015"); //// //recData.UserData.Add(elementData. //// Console.WriteLine(elementDataItem); //// } // //} // } #endregion commented 20101031 else { cmdlet.WriteObject(cmdlet, "singleResult is not IWebElement"); cmdlet.WriteObject(cmdlet, "else: " + singleResult); //cmdlet.WriteObject(cmdlet, singleResult); } } // foreach (var singleResult in scriptResults) { } // if (null != scriptResults) { } catch (Exception eRec) { Console.WriteLine(eRec.Message); } #region commented - the previous version // ReadOnlyCollection<IWebElement> scriptResult = null; // //System.Collections.ArrayList scriptResultOther = null; // object[] scriptResultOther = null; // // try { // var scriptResultUndefined = // ((IJavaScriptExecutor)CurrentData.CurrentWebDriver).ExecuteScript( // JSRecorder.constRecorderGetElement, // (new string[] { string.Empty } )); //// (ReadOnlyCollection<IWebElement>)((IJavaScriptExecutor)CurrentData.CurrentWebDriver).ExecuteScript( //// JSRecorder.constRecorderGetElement, //// (new string[] { string.Empty } )); // // scriptResult = scriptResultUndefined as ReadOnlyCollection<IWebElement>; // scriptResultOther = scriptResultUndefined as object[]; // // if (null == scriptResult && null == scriptResultOther ) { // cmdlet.WriteVerbose(cmdlet, "scriptResult == null"); // } else { // cmdlet.WriteVerbose(cmdlet, "scriptResult != null"); // if (null != scriptResult && 0 == scriptResult.Count) { // cmdlet.WriteVerbose(cmdlet, "scriptResult.Count == 0"); // } else if (null != scriptResultOther && 0 == scriptResultOther.Length) { // cmdlet.WriteVerbose(cmdlet, "scriptResultOther.Count == 0"); // } else { // cmdlet.WriteVerbose(cmdlet, "scriptResult.Count == " + scriptResult.Count.ToString()); // // foreach (IWebElement resultElement in scriptResult) { // codeSequence = // Recorder.RecordCodeSequence( // cmdlet, // recordingCollection, // resultElement, // codeSequence); // // if (Recorder.isNotFakeWebElement(resultElement)) { // cmdlet.WriteVerbose(cmdlet, "element is not a fake"); // // if (cmdlet.PassThru) { // // cmdlet.WriteVerbose(cmdlet, "outputting the object"); // cmdlet.WriteObject(cmdlet, resultElement); // // } else if (Preferences.Highlight) { // // cmdlet.WriteVerbose(cmdlet, "highlighting the object"); // SeHelper.Highlight(resultElement); // // } // } // } // // // 20121012 // scriptResult = null; // ?? // } // } // } // catch (Exception eRecording) { //Console.WriteLine("eRecording: " + eRecording.Message); // if (eRecording.Message.Contains("Element does not exist in cache")) { // CurrentData.CurrentWebDriver.Navigate().Refresh(); // } // } // // // // // // // // #endregion commented - the previous version cmdlet.WriteVerbose(cmdlet, "startTime = " + startTime.ToString()); if ((System.DateTime.Now - startTime).TotalSeconds > (cmdlet.Timeout / 1000) && cmdlet.Wait) { cmdlet.WriteVerbose(cmdlet, "Time spent: " + (System.DateTime.Now - startTime).TotalSeconds + " seconds"); cmdlet.Wait = false; } Recorder.SleepAndRunScriptBlocks(cmdlet); /* if (Preferences.TranscriptCleanRecordedDuringSleep) { SeHelper.CleanRecordedDuringSleep(cmdlet); } */ goToNewlyOpenedWindowhandle(currentWindowHandles); } while (cmdlet.Wait); //SeHelper.ExitRecording(cmdlet); // store the last code sequence Recorder.StoreCodeSequenceInCollection( cmdlet, Recorder.recordingCollection, 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; }
public void CheckCodeSequenceNovelty_CodeSequence_Duplicated() { bool result = false; bool expectedResult = false; TranscriptCmdletBase cmdlet = new TranscriptCmdletBase(); Recorder.RecordingCollection = new System.Collections.Generic.List<IRecordedCodeSequence>(); IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); RecordedWebElement webElement = new RecordedWebElement(); webElement.TagName = "button"; codeSequence.Items.Add(webElement); RecordedAction action = new RecordedAction(); action.UserData.Add("code", Recorder.CodeGenElementClick); codeSequence.Items.Add(action); Recorder.RecordingCollection.Add(codeSequence); // a new code sequence codeSequence = new RecordedCodeSequence(); webElement = new RecordedWebElement(); webElement.TagName = "button"; codeSequence.Items.Add(webElement); action = new RecordedAction(); action.UserData.Add("code", Recorder.CodeGenElementClick); codeSequence.Items.Add(action); result = Recorder.CheckCodeSequenceNovelty( cmdlet, Recorder.RecordingCollection, codeSequence); Assert.AreEqual(expectedResult, 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); }
public void CheckCodeSequenceNovelty_RecordingCollection_Empty_CodeSequence_Non_Empty() { bool result = false; bool expectedResult = true; TranscriptCmdletBase cmdlet = new TranscriptCmdletBase(); Recorder.RecordingCollection = new System.Collections.Generic.List<IRecordedCodeSequence>(); IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); codeSequence.Items.Add((new RecordedAction())); result = Recorder.CheckCodeSequenceNovelty( cmdlet, Recorder.RecordingCollection, codeSequence); Assert.AreEqual(expectedResult, result); }
public void RecordDataItem_DataCollection_Not_Empty() { IRecordedCodeSequence result = null; IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); System.Collections.Generic.List<object> list = new System.Collections.Generic.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())); }
public static void RecordActions(TranscriptCmdletBase cmdlet, IJsRecorder jsRecorder, RecorderLanguages languageCode) //, bool waitForElement) { var startTime = DateTime.Now; RecordingCollection = new List <IRecordedCodeSequence>(); IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); var codeString = string.Empty; var currentWindowHandles = //CurrentData.CurrentWebDriver.WindowHandles; new ReadOnlyCollection <string>((new List <string>())); if (null != CurrentData.CurrentWebDriver && null != CurrentData.CurrentWebDriver.WindowHandles) { currentWindowHandles = CurrentData.CurrentWebDriver.WindowHandles; } do { jsRecorder.MakeJsInjection(cmdlet); try { var scriptResults = jsRecorder.GetRecordedResults(); if (null != scriptResults) // && scriptResults is object[] && 0 < ((object[])scriptResults).Length) { { foreach (var singleResult in scriptResults) { codeSequence = RecordCodeSequence( cmdlet, RecordingCollection, singleResult, codeSequence); if (CodeSequenceCompleted) { NotifyCodeGathered(); codeString = ConvertCodeSequenceToCode( codeSequence, SelectLanguage(languageCode), codeString); Console.WriteLine("codeString:"); Console.WriteLine(codeString); CodeSequenceCompleted = false; } if (null != (singleResult as IWebElement)) { var resultElement = singleResult as IWebElement; if (IsNotFakeWebElement(resultElement)) { cmdlet.WriteVerbose(cmdlet, "element is not a fake"); if (cmdlet.PassThru) { cmdlet.WriteVerbose(cmdlet, "outputting the object"); cmdlet.WriteObject(cmdlet, resultElement); } else if (Preferences.Highlight) { cmdlet.WriteVerbose(cmdlet, "highlighting the object"); SeHelper.Highlight(resultElement); } } } #region commented 20101031 // else if (null != (singleResult as ReadOnlyCollection<object>)){ ////Console.WriteLine("0010: singleResult type is " + singleResult.GetType().Name); // RecordedData recData = new RecordedData(); // ReadOnlyCollection<object> elementData = singleResult as ReadOnlyCollection<object>; ////Console.WriteLine("0012: Count = " + elementData.Count.ToString()); // ////try { Console.WriteLine("000001: " + elementData); } catch {} ////try { cmdlet.WriteObject(cmdlet, "000002: " + elementData); } catch {} ////try { Console.WriteLine("000003: " + elementData[0]); } catch {} ////try { cmdlet.WriteObject("000004: " + elementData[0]); } catch {} ////if (0 < elementData.Count) { //// foreach (var item1 in elementData) { //// cmdlet.WriteObject(cmdlet, item1.GetType().Name); //// cmdlet.WriteObject(cmdlet, item1); //// } ////} // //// Dictionary<string, object> elementData2 = singleResult as Dictionary<string, object>; ////if (null != elementData2) { //// Console.WriteLine("0012-2: Count = " + elementData2.Keys.Count.ToString()); //// foreach (KeyValuePair<string, object> elementDataItem in elementData) { //// Console.WriteLine("elementDataItem[elementDataItem.Keys[]] = " + elementDataItem.Key + "\t" + elementDataItem.Value.ToString()); //// } ////} //// foreach (var elementDataItem in elementData) { ////Console.WriteLine("0015"); //// //recData.UserData.Add(elementData. //// Console.WriteLine(elementDataItem); //// } // //} // } #endregion commented 20101031 else { cmdlet.WriteObject(cmdlet, "singleResult is not IWebElement"); cmdlet.WriteObject(cmdlet, "else: " + singleResult); //cmdlet.WriteObject(cmdlet, singleResult); } } // foreach (var singleResult in scriptResults) { } // if (null != scriptResults) { } catch (Exception eRec) { Console.WriteLine(eRec.Message); } #region commented - the previous version // ReadOnlyCollection<IWebElement> scriptResult = null; // //System.Collections.ArrayList scriptResultOther = null; // object[] scriptResultOther = null; // // try { // var scriptResultUndefined = // ((IJavaScriptExecutor)CurrentData.CurrentWebDriver).ExecuteScript( // JSRecorder.constRecorderGetElement, // (new string[] { string.Empty } )); //// (ReadOnlyCollection<IWebElement>)((IJavaScriptExecutor)CurrentData.CurrentWebDriver).ExecuteScript( //// JSRecorder.constRecorderGetElement, //// (new string[] { string.Empty } )); // // scriptResult = scriptResultUndefined as ReadOnlyCollection<IWebElement>; // scriptResultOther = scriptResultUndefined as object[]; // // if (null == scriptResult && null == scriptResultOther ) { // cmdlet.WriteVerbose(cmdlet, "scriptResult == null"); // } else { // cmdlet.WriteVerbose(cmdlet, "scriptResult != null"); // if (null != scriptResult && 0 == scriptResult.Count) { // cmdlet.WriteVerbose(cmdlet, "scriptResult.Count == 0"); // } else if (null != scriptResultOther && 0 == scriptResultOther.Length) { // cmdlet.WriteVerbose(cmdlet, "scriptResultOther.Count == 0"); // } else { // cmdlet.WriteVerbose(cmdlet, "scriptResult.Count == " + scriptResult.Count.ToString()); // // foreach (IWebElement resultElement in scriptResult) { // codeSequence = // Recorder.RecordCodeSequence( // cmdlet, // recordingCollection, // resultElement, // codeSequence); // // if (Recorder.isNotFakeWebElement(resultElement)) { // cmdlet.WriteVerbose(cmdlet, "element is not a fake"); // // if (cmdlet.PassThru) { // // cmdlet.WriteVerbose(cmdlet, "outputting the object"); // cmdlet.WriteObject(cmdlet, resultElement); // // } else if (Preferences.Highlight) { // // cmdlet.WriteVerbose(cmdlet, "highlighting the object"); // SeHelper.Highlight(resultElement); // // } // } // } // // // 20121012 // scriptResult = null; // ?? // } // } // } // catch (Exception eRecording) { //Console.WriteLine("eRecording: " + eRecording.Message); // if (eRecording.Message.Contains("Element does not exist in cache")) { // CurrentData.CurrentWebDriver.Navigate().Refresh(); // } // } // // // // // // // // #endregion commented - the previous version cmdlet.WriteVerbose(cmdlet, "startTime = " + startTime.ToString()); if ((DateTime.Now - startTime).TotalSeconds > (cmdlet.Timeout / 1000) && cmdlet.Wait) { cmdlet.WriteVerbose(cmdlet, "Time spent: " + (DateTime.Now - startTime).TotalSeconds + " seconds"); cmdlet.Wait = false; } SleepAndRunScriptBlocks(cmdlet); /* * if (Preferences.TranscriptCleanRecordedDuringSleep) { * SeHelper.CleanRecordedDuringSleep(cmdlet); * } */ GoToNewlyOpenedWindowhandle(currentWindowHandles); } while (cmdlet.Wait); //SeHelper.ExitRecording(cmdlet); // store the last code sequence StoreCodeSequenceInCollection( cmdlet, RecordingCollection, codeSequence); }
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; }
public void RecordDataItem_DataCollection_Empty() { IRecordedCodeSequence result = null; IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); System.Collections.Generic.List<object> list = new System.Collections.Generic.List<object>(); ReadOnlyCollection<object> dataCollection = new ReadOnlyCollection<object>(list); IRecordedCodeSequence expectedResult = codeSequence; result = generateDataItem( codeSequence, dataCollection, (new RecordedData())); Assert.AreEqual(expectedResult, result); }
public void RecordedCodeSequence_Constructor() { RecordedCodeSequence codeSequence = new RecordedCodeSequence(); //NUnit.Framework.Assert.NotNull(codeSequence.Items); Assert.IsNotNull(codeSequence.Items); }
public void CodeSequence_with_the_same_RecordedAction() { IRecordedCodeSequence result = null; string expectedResult = Recorder.codeGenElementClick; IRecordedCodeSequence codeSequence = new RecordedCodeSequence(); IWebElement alreadyHere = new FakeWebElement(Recorder.constAuxElementClicked, "aaa"); IWebElement element = new FakeWebElement(Recorder.constAuxElementClicked, "aaa"); result = generateActionItem( codeSequence, element, (new RecordedAction())); Assert.AreEqual( expectedResult, ((IRecordedActionItem)result.Items[result.Items.Count - 1]).UserData["code"]); }