ObservableList <ControlProperty> IWindowExplorerTreeItem.GetElementProperties() { //TODO: temp solution fix me hard coded [0[] ASCFDriver d = (ASCFDriver)App.AutomateTabGingerRunner.ApplicationAgents[0].Agent.Driver; string RC = d.Send("GetControlInfo", "ByName" + "", ASCFControlInfo.Path, " ", " ", false); if (RC.StartsWith("OK")) { string vals = RC.Substring(3); string[] valArr = vals.Split('~'); ObservableList <ControlProperty> list = new ObservableList <ControlProperty>(); foreach (string pv in valArr) { if (pv.Length > 0) { string[] prop = pv.Split('='); list.Add(new ControlProperty() { Name = prop[0], Value = prop[1] }); } } return(list); } else { return(null); } }
//TODO: use me private void InjectHTMLSpyButton_Click(object sender, RoutedEventArgs e) { //TODO: remove hard code [0] ASCFDriver d = (ASCFDriver)App.AutomateTabGingerRunner.ApplicationAgents[0].Agent.Driver; d.InjectHTMLSpy(mPath); }
List <ITreeViewItem> ITreeViewItem.Childrens() { //TODO: fix me hard coded 0 ASCFDriver d = (ASCFDriver)((Agent)App.AutomateTabGingerRunner.ApplicationAgents[0].Agent).Driver; d.SetCurrentBrowserControl(eLocateBy.ByName, Path); List <ASCFBrowserElementInfo> lst = d.GetBrowserElements(); if (lst == null) { Reporter.ToUser(eUserMsgKeys.GeneralErrorOccured, "Cannot list Browser elements"); return(null); } List <ITreeViewItem> list = new List <ITreeViewItem>(); foreach (ASCFBrowserElementInfo c in lst) { //TODO: add more handlers switch (c.ControlType) { case ASCFBrowserElementInfo.eControlType.TextBox: list.Add(new ASCFBrowserTextBoxTreeItem() { ASCFBrowserElementInfo = c }); break; case ASCFBrowserElementInfo.eControlType.Link: list.Add(new ASCFBrowserLinkTreeItem() { ASCFBrowserElementInfo = c }); break; case ASCFBrowserElementInfo.eControlType.Button: list.Add(new ASCFBrowserButtonTreeItem() { ASCFBrowserElementInfo = c }); break; case ASCFBrowserElementInfo.eControlType.Label: list.Add(new ASCFBrowserLabelTreeItem() { ASCFBrowserElementInfo = c }); break; case ASCFBrowserElementInfo.eControlType.DropDown: list.Add(new ASCFBrowserDropDownTreeItem() { ASCFBrowserElementInfo = c }); break; case ASCFBrowserElementInfo.eControlType.CheckBox: list.Add(new ASCFBrowserCheckBoxTreeItem() { ASCFBrowserElementInfo = c }); break; default: // Add generic element - unknown type... list.Add(new ASCFBrowserElementTreeItem() { ASCFBrowserElementInfo = c }); break; } } return(list); }
public void StartAgentDriver(IAgent IAgent) { Agent agent = (Agent)IAgent; BusinessFlow BusinessFlow = agent.BusinessFlow; ProjEnvironment ProjEnvironment = agent.ProjEnvironment; bool Remote = agent.Remote; DriverBase Driver = null; try { agent.mIsStarting = true; agent.OnPropertyChanged(Fields.Status); try { if (Remote) { throw new Exception("Remote is Obsolete, use GingerGrid"); } else { switch (agent.DriverType) { case eDriverType.InternalBrowser: Driver = new InternalBrowser(BusinessFlow); break; case eDriverType.SeleniumFireFox: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.FireFox); break; case eDriverType.SeleniumChrome: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.Chrome); break; case eDriverType.SeleniumIE: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.IE); break; case eDriverType.SeleniumRemoteWebDriver: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.RemoteWebDriver); // set capabilities if (agent.DriverConfiguration == null) { agent.DriverConfiguration = new ObservableList <DriverConfigParam>(); } ((SeleniumDriver)Driver).RemoteGridHub = agent.GetParamValue(SeleniumDriver.RemoteGridHubParam); ((SeleniumDriver)Driver).RemoteBrowserName = agent.GetParamValue(SeleniumDriver.RemoteBrowserNameParam); ((SeleniumDriver)Driver).RemotePlatform = agent.GetParamValue(SeleniumDriver.RemotePlatformParam); ((SeleniumDriver)Driver).RemoteVersion = agent.GetParamValue(SeleniumDriver.RemoteVersionParam); break; case eDriverType.SeleniumEdge: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.Edge); break; case eDriverType.ASCF: Driver = new ASCFDriver(BusinessFlow, agent.Name); break; case eDriverType.DOSConsole: Driver = new DOSConsoleDriver(BusinessFlow); break; case eDriverType.UnixShell: Driver = new UnixShellDriver(BusinessFlow, ProjEnvironment); ((UnixShellDriver)Driver).SetScriptsFolder(System.IO.Path.Combine(agent.SolutionFolder, @"Documents\sh\")); break; case eDriverType.MobileAppiumAndroid: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.Android, BusinessFlow); break; case eDriverType.MobileAppiumIOS: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.iOS, BusinessFlow); break; case eDriverType.MobileAppiumAndroidBrowser: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.AndroidBrowser, BusinessFlow); break; case eDriverType.MobileAppiumIOSBrowser: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.iOSBrowser, BusinessFlow); break; case eDriverType.PerfectoMobileAndroid: Driver = new PerfectoDriver(PerfectoDriver.eContextType.NativeAndroid, BusinessFlow); break; case eDriverType.PerfectoMobileAndroidWeb: Driver = new PerfectoDriver(PerfectoDriver.eContextType.WebAndroid, BusinessFlow); break; case eDriverType.PerfectoMobileIOS: Driver = new PerfectoDriver(PerfectoDriver.eContextType.NativeIOS, BusinessFlow); break; case eDriverType.PerfectoMobileIOSWeb: Driver = new PerfectoDriver(PerfectoDriver.eContextType.WebIOS, BusinessFlow); break; case eDriverType.WebServices: WebServicesDriver WebServicesDriver = new WebServicesDriver(BusinessFlow); Driver = WebServicesDriver; break; case eDriverType.WindowsAutomation: Driver = new WindowsDriver(BusinessFlow); break; case eDriverType.PowerBuilder: Driver = new PBDriver(BusinessFlow); break; case eDriverType.JavaDriver: Driver = new JavaDriver(BusinessFlow); break; case eDriverType.MainFrame3270: Driver = new MainFrameDriver(BusinessFlow); break; //case eDriverType.AndroidADB: // string DeviceConfigFolder = agent.GetOrCreateParam("DeviceConfigFolder").Value; // if (!string.IsNullOrEmpty(DeviceConfigFolder)) // { // Driver = new AndroidADBDriver(BusinessFlow, System.IO.Path.Combine(agent.SolutionFolder, @"Documents\Devices", DeviceConfigFolder, @"\")); // } // else // { // //TODO: Load create sample folder/device, or start the wizard // throw new Exception("Please set device config folder"); // } // break; default: { throw new Exception("Matching Driver was not found."); } } } } catch (Exception e) { Reporter.ToLog(eLogLevel.ERROR, "Failed to set Agent Driver", e); return; } if (agent.AgentType == eAgentType.Service) { throw new Exception("Error - Agent type is service and trying to launch from Ginger.exe"); // we should never get here with service } else { agent.Driver = Driver; Driver.BusinessFlow = agent.BusinessFlow; agent.SetDriverConfiguration(); //if STA we need to start it on seperate thread, so UI/Window can be refreshed: Like IB, Mobile, Unix if (Driver.IsSTAThread()) { agent.CTS = new CancellationTokenSource(); agent.MSTATask = new Task(() => { Driver.StartDriver(); }, agent.CTS.Token, TaskCreationOptions.LongRunning); agent.MSTATask.Start(); } else { Driver.StartDriver(); } } } finally { if (agent.AgentType == eAgentType.Service) { agent.mIsStarting = false; } else { if (Driver != null) { // Give the driver time to start Thread.Sleep(500); Driver.IsDriverRunning = true; Driver.driverMessageEventHandler += agent.driverMessageEventHandler; } agent.mIsStarting = false; agent.OnPropertyChanged(Fields.Status); agent.OnPropertyChanged(Fields.IsWindowExplorerSupportReady); } } }
List <ITreeViewItem> ITreeViewItem.Childrens() { //TODO: fix hard coded [0] ref ASCFDriver = (ASCFDriver)((Agent)App.AutomateTabGingerRunner.ApplicationAgents[0].Agent).Driver; List <ITreeViewItem> Childrens = new List <ITreeViewItem>(); string rc = ASCFDriver.Send("GetFormControls", " ", Path, " ", " ", false); string controls; if (rc.StartsWith("OK")) { controls = rc.Substring(3); } else { //TODO: messagebox err return(null); } string[] a = controls.Split('~'); foreach (string control in a) { if (control.Length > 0) { string[] ControlInfo = control.Split('@'); if (ControlInfo[1] == "class com.amdocs.uif.widgets.TextFieldNative") { ASCFTextBoxTreeItem ACTI = new ASCFTextBoxTreeItem(); ACTI.Name = ControlInfo[0]; ACTI.Path = ControlInfo[2]; ACTI.ASCFControlInfo = new ASCFControlInfo() { Name = ACTI.Name, Path = ACTI.Path, ControlType = ASCFControlInfo.eControlType.TextBox }; Childrens.Add(ACTI); } else if (ControlInfo[1] == "class com.amdocs.uif.widgets.UifForm") { ASCFFormTreeItem ACFI = new ASCFFormTreeItem(); ACFI.Name = ControlInfo[0]; ACFI.Path = ControlInfo[2]; ACFI.ASCFDriver = ASCFDriver; Childrens.Add(ACFI); } else if (ControlInfo[1] == "SubForm") { ASCFFormTreeItem ACFF = new ASCFFormTreeItem(); ACFF.Name = ControlInfo[0]; ACFF.Path = ControlInfo[2]; ACFF.ASCFDriver = ASCFDriver; Childrens.Add(ACFF); } else if (ControlInfo[1] == "class com.amdocs.uif.widgets.BrowserNative") { ASCFBrowserTreeItem ABTT = new ASCFBrowserTreeItem(); ABTT.Name = ControlInfo[0]; ABTT.Path = ControlInfo[2]; ABTT.ASCFControlInfo = new ASCFControlInfo() { Name = ABTT.Name, Path = ABTT.Path, ControlType = ASCFControlInfo.eControlType.Browser }; Childrens.Add(ABTT); } else if (ControlInfo[1] == "class com.amdocs.uif.widgets.LabelNative") { ASCFLabelTreeItem ACTI = new ASCFLabelTreeItem(); ACTI.Name = ControlInfo[0]; ACTI.Path = ControlInfo[2]; ACTI.ASCFControlInfo = new ASCFControlInfo() { Name = ACTI.Name, Path = ACTI.Path, ControlType = ASCFControlInfo.eControlType.Label }; Childrens.Add(ACTI); } else if (ControlInfo[1] == "class com.amdocs.uif.widgets.SearchGridNative") { ASCFGridTreeItem ACTI = new ASCFGridTreeItem(); ACTI.Name = ControlInfo[0]; ACTI.Path = ControlInfo[2]; ACTI.ASCFControlInfo = new ASCFControlInfo() { Name = ACTI.Name, Path = ACTI.Path, ControlType = ASCFControlInfo.eControlType.Grid }; Childrens.Add(ACTI); } // TODO: add other types... else { ASCFControlTreeItem ACTI = new ASCFControlTreeItem(); ACTI.Name = ControlInfo[0]; ACTI.Path = ControlInfo[2]; ACTI.ASCFControlInfo = new ASCFControlInfo() { Name = ACTI.Name, Path = ACTI.Path }; Childrens.Add(ACTI); } } } return(Childrens); }
public void StartAgentDriver(IAgent agent) { Agent zAgent = (Agent)agent; BusinessFlow BusinessFlow = zAgent.BusinessFlow; ProjEnvironment ProjEnvironment = zAgent.ProjEnvironment; bool Remote = zAgent.Remote; DriverBase Driver = null; zAgent.mIsStarting = true; zAgent.OnPropertyChanged(Fields.Status); try { try { if (Remote) { throw new Exception("Remote is Obsolete, use GingerGrid"); //We pass the agent info } else { switch (zAgent.DriverType) { case eDriverType.InternalBrowser: Driver = new InternalBrowser(BusinessFlow); break; case eDriverType.SeleniumFireFox: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.FireFox); break; case eDriverType.SeleniumChrome: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.Chrome); break; case eDriverType.SeleniumIE: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.IE); break; case eDriverType.SeleniumRemoteWebDriver: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.RemoteWebDriver); // set capabilities if (zAgent.DriverConfiguration == null) { zAgent.DriverConfiguration = new ObservableList <DriverConfigParam>(); } ((SeleniumDriver)Driver).RemoteGridHub = zAgent.GetParamValue(SeleniumDriver.RemoteGridHubParam); ((SeleniumDriver)Driver).RemoteBrowserName = zAgent.GetParamValue(SeleniumDriver.RemoteBrowserNameParam); ((SeleniumDriver)Driver).RemotePlatform = zAgent.GetParamValue(SeleniumDriver.RemotePlatformParam); ((SeleniumDriver)Driver).RemoteVersion = zAgent.GetParamValue(SeleniumDriver.RemoteVersionParam); break; case eDriverType.SeleniumEdge: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.Edge); break; case eDriverType.SeleniumPhantomJS: Driver = new SeleniumDriver(GingerCore.Drivers.SeleniumDriver.eBrowserType.PhantomJS); break; case eDriverType.ASCF: Driver = new ASCFDriver(BusinessFlow, zAgent.Name); break; case eDriverType.DOSConsole: Driver = new DOSConsoleDriver(BusinessFlow); break; case eDriverType.UnixShell: Driver = new UnixShellDriver(BusinessFlow, ProjEnvironment); ((UnixShellDriver)Driver).SetScriptsFolder(System.IO.Path.Combine(zAgent.SolutionFolder, @"Documents\sh\")); break; case eDriverType.MobileAppiumAndroid: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.Android, BusinessFlow); break; case eDriverType.MobileAppiumIOS: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.iOS, BusinessFlow); break; case eDriverType.MobileAppiumAndroidBrowser: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.AndroidBrowser, BusinessFlow); break; case eDriverType.MobileAppiumIOSBrowser: Driver = new SeleniumAppiumDriver(SeleniumAppiumDriver.eSeleniumPlatformType.iOSBrowser, BusinessFlow); break; case eDriverType.PerfectoMobileAndroid: Driver = new PerfectoDriver(PerfectoDriver.eContextType.NativeAndroid, BusinessFlow); break; case eDriverType.PerfectoMobileAndroidWeb: Driver = new PerfectoDriver(PerfectoDriver.eContextType.WebAndroid, BusinessFlow); break; case eDriverType.PerfectoMobileIOS: Driver = new PerfectoDriver(PerfectoDriver.eContextType.NativeIOS, BusinessFlow); break; case eDriverType.PerfectoMobileIOSWeb: Driver = new PerfectoDriver(PerfectoDriver.eContextType.WebIOS, BusinessFlow); break; case eDriverType.WebServices: WebServicesDriver WebServicesDriver = new WebServicesDriver(BusinessFlow); Driver = WebServicesDriver; break; case eDriverType.WindowsAutomation: Driver = new WindowsDriver(BusinessFlow); break; case eDriverType.FlaUIWindow: Driver = new WindowsDriver(BusinessFlow, UIAutomationDriverBase.eUIALibraryType.FlaUI); break; case eDriverType.PowerBuilder: Driver = new PBDriver(BusinessFlow); break; case eDriverType.FlaUIPB: Driver = new PBDriver(BusinessFlow, UIAutomationDriverBase.eUIALibraryType.FlaUI); break; case eDriverType.JavaDriver: Driver = new JavaDriver(BusinessFlow); break; case eDriverType.MainFrame3270: Driver = new MainFrameDriver(BusinessFlow); break; case eDriverType.AndroidADB: string DeviceConfigFolder = zAgent.GetOrCreateParam("DeviceConfigFolder").Value; if (!string.IsNullOrEmpty(DeviceConfigFolder)) { Driver = new AndroidADBDriver(BusinessFlow, System.IO.Path.Combine(zAgent.SolutionFolder, @"Documents\Devices", DeviceConfigFolder, @"\")); } else { //TODO: Load create sample folder/device, or start the wizard throw new Exception("Please set device config folder"); } break; //TODO: default mess } } } catch (Exception e) { Reporter.ToUser(eUserMsgKeys.FailedToConnectAgent, zAgent.Name, e.Message); } if (zAgent.AgentType == eAgentType.Service) { zAgent.StartPluginService(); zAgent.OnPropertyChanged(Fields.Status); } else { zAgent.Driver = Driver; Driver.BusinessFlow = zAgent.BusinessFlow; zAgent.SetDriverConfiguration(); //if STA we need to start it on seperate thread, so UI/Window can be refreshed: Like IB, Mobile, Unix if (Driver.IsSTAThread()) { zAgent.CTS = new CancellationTokenSource(); zAgent.MSTATask = new Task(() => { Driver.StartDriver(); }, zAgent.CTS.Token, TaskCreationOptions.LongRunning); zAgent.MSTATask.Start(); } else { Driver.StartDriver(); } } } finally { if (zAgent.AgentType == eAgentType.Service) { zAgent.mIsStarting = false; } else { // Give the driver time to start Thread.Sleep(500); zAgent.mIsStarting = false; Driver.IsDriverRunning = true; zAgent.OnPropertyChanged(Fields.Status); Driver.driverMessageEventHandler += zAgent.driverMessageEventHandler; zAgent.OnPropertyChanged(Fields.IsWindowExplorerSupportReady); } } //return Driver; }