private static ILanguagePackage SelectLanguage(RecorderLanguages languageCode) { ILanguagePackage languagePackage = null; switch (languageCode) { case RecorderLanguages.PowerShell: languagePackage = new PsLanguage(); break; case RecorderLanguages.CSharp: languagePackage = new CsLanguage(); break; case RecorderLanguages.Java: languagePackage = new JavaLanguage(); break; default: //throw new Exception("Invalid value for RecorderLanguages"); languagePackage = new PsLanguage(); break; } return(languagePackage); }
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); }
private static ILanguagePackage selectLanguage(RecorderLanguages languageCode) { ILanguagePackage languagePackage = null; switch (languageCode) { case RecorderLanguages.PowerShell: languagePackage = new PSLanguage(); break; case RecorderLanguages.CSharp: languagePackage = new CSLanguage(); break; case RecorderLanguages.Java: languagePackage = new JavaLanguage(); break; default: //throw new Exception("Invalid value for RecorderLanguages"); languagePackage = new PSLanguage(); break; } return languagePackage; }
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); }