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); } } }
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; }