Example #1
0
        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);
            }
        }
Example #2
0
        //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);
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        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;
        }