Пример #1
0
        public Activity Create(System.Windows.DependencyObject target)
        {
            var fef = new GetElement();
            var aa  = new ActivityAction <IEElement>();
            var da  = new DelegateInArgument <IEElement>();

            da.Name     = "item";
            fef.Body    = aa;
            aa.Argument = da;
            return(fef);
        }
Пример #2
0
        private void OnMouseUp(InputEventArgs e)
        {
            var thread = new Thread(new ThreadStart(() =>
            {
                Log.Debug(string.Format("IE.Recording::OnMouseUp::begin"));
                var re = new RecordEvent(); re.Button = e.Button;
                var a  = new GetElement {
                    DisplayName = e.Element.Id + "-" + e.Element.Name
                };

                var browser     = new Browser(e.Element.rawElement);
                var htmlelement = browser.ElementFromPoint(e.X, e.Y);
                if (htmlelement == null)
                {
                    return;
                }

                var sw = new System.Diagnostics.Stopwatch();
                sw.Start();
                IESelector sel = null;
                // sel = new IESelector(e.Element.rawElement, null, true);
                sel = new IESelector(htmlelement, null, browser.Document, false);
                if (sel == null)
                {
                    return;
                }
                if (sel.Count < 2)
                {
                    return;
                }
                a.Selector   = sel.ToString();
                re.UIElement = e.Element;
                re.Element   = new IEElement(htmlelement);
                re.Selector  = sel;
                re.X         = e.X;
                re.Y         = e.Y;

                Log.Debug(e.Element.SupportInput + " / " + e.Element.ControlType);
                re.a = new GetElementResult(a);
                if (htmlelement.tagName.ToLower() == "input")
                {
                    mshtml.IHTMLInputElement inputelement = (mshtml.IHTMLInputElement)htmlelement;
                    re.SupportInput = (inputelement.type.ToLower() == "text" || inputelement.type.ToLower() == "password");
                }

                Log.Debug(string.Format("IE.Recording::OnMouseUp::end {0:mm\\:ss\\.fff}", sw.Elapsed));
                OnUserAction?.Invoke(this, re);
            }));

            thread.IsBackground = true;
            thread.Start();
        }
Пример #3
0
        public bool parseUserAction(ref IRecordEvent e)
        {
            if (e.UIElement == null)
            {
                return(false);
            }
            if (e.UIElement.ProcessId < 1)
            {
                return(false);
            }
            var p = System.Diagnostics.Process.GetProcessById(e.UIElement.ProcessId);

            if (p.ProcessName != "iexplore" && p.ProcessName != "iexplore.exe")
            {
                return(false);
            }

            var browser = new Browser(e.UIElement.rawElement);


            var htmlelement = browser.ElementFromPoint(e.X, e.Y);

            if (htmlelement == null)
            {
                return(false);
            }

            var selector = new IESelector(htmlelement, null, browser.Document, false);

            var a = new GetElement {
                DisplayName = htmlelement.id + "-" + htmlelement.tagName + "-" + htmlelement.className
            };

            a.Selector = selector.ToString();


            var tagName = htmlelement.tagName;

            if (string.IsNullOrEmpty(tagName))
            {
                tagName = "";
            }
            tagName = tagName.ToLower();
            e.a     = new GetElementResult(a);
            if (tagName == "input")
            {
                mshtml.IHTMLInputElement inputelement = (mshtml.IHTMLInputElement)htmlelement;
                e.SupportInput = (inputelement.type.ToLower() == "text" || inputelement.type.ToLower() == "password");
            }

            return(true);
        }
Пример #4
0
        public Activity Create(System.Windows.DependencyObject target)
        {
            Type t          = typeof(GetElement);
            var  wfdesigner = Plugin.client.Window.LastDesigner;

            WFHelper.DynamicAssemblyMonitor(wfdesigner.WorkflowDesigner, t.Assembly.GetName().Name, t.Assembly, true);
            var fef = new GetElement();
            var aa  = new ActivityAction <IEElement>();
            var da  = new DelegateInArgument <IEElement>();

            da.Name     = "item";
            fef.Body    = aa;
            aa.Argument = da;
            return(fef);
        }
Пример #5
0
 public GetElementResult(GetElement activity)
 {
     Activity = activity;
 }
Пример #6
0
        private void OnMouseUp(InputEventArgs e)
        {
            try
            {
                Log.Debug(string.Format("IE.Recording::OnMouseUp::begin"));
                var re = new RecordEvent
                {
                    Button = e.Button
                }; var a = new GetElement {
                    DisplayName = (e.Element.Name).Replace(Environment.NewLine, "").Trim()
                };

                var browser     = new Browser(e.Element.RawElement);
                var htmlelement = browser.ElementFromPoint(e.X, e.Y);
                if (htmlelement == null)
                {
                    return;
                }

                var sw = new System.Diagnostics.Stopwatch();
                sw.Start();
                IESelector sel = null;
                // sel = new IESelector(e.Element.rawElement, null, true);
                GenericTools.RunUI(() =>
                {
                    sel = new IESelector(browser, htmlelement, null, false, e.X, e.Y);
                });
                if (sel == null)
                {
                    return;
                }
                if (sel.Count < 2)
                {
                    return;
                }
                a.Selector   = sel.ToString();
                a.Image      = sel.Last().Element.ImageString();
                re.UIElement = e.Element;
                re.Element   = new IEElement(browser, htmlelement);
                re.Selector  = sel;
                re.X         = e.X;
                re.Y         = e.Y;

                Log.Debug(e.Element.SupportInput + " / " + e.Element.ControlType);
                re.a = new GetElementResult(a);
                if (htmlelement.tagName.ToLower() == "input" && htmlelement.tagName.ToLower() == "select")
                {
                    MSHTML.IHTMLInputElement inputelement = (MSHTML.IHTMLInputElement)htmlelement;
                    re.SupportInput = (inputelement.type.ToLower() == "text" || inputelement.type.ToLower() == "password");
                }
                re.SupportSelect = false;
                Log.Debug(string.Format("IE.Recording::OnMouseUp::end {0:mm\\:ss\\.fff}", sw.Elapsed));
                OnUserAction?.Invoke(this, re);
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
            }
            //var thread = new Thread(new ThreadStart(() =>
            //{
            //}));
            //thread.IsBackground = true;
            //thread.Start();
        }
Пример #7
0
        public bool ParseUserAction(ref IRecordEvent e)
        {
            if (e.UIElement == null)
            {
                return(false);
            }
            if (e.UIElement.ProcessId < 1)
            {
                return(false);
            }
            using (var p = System.Diagnostics.Process.GetProcessById(e.UIElement.ProcessId))
            {
                if (p.ProcessName != "iexplore" && p.ProcessName != "iexplore.exe")
                {
                    return(false);
                }
            }
            var browser = new Browser();

            var htmlelement = browser.ElementFromPoint(e.X, e.Y);

            if (htmlelement == null)
            {
                return(false);
            }
            var selector = new IESelector(browser, htmlelement, null, true, e.X, e.Y);

            e.Selector = selector;
            e.Element  = new IEElement(browser, htmlelement);

            var a = new GetElement {
                DisplayName = (htmlelement.id + "-" + htmlelement.tagName + "-" + htmlelement.className).Replace(Environment.NewLine, "").Trim()
            };

            a.Variables.Add(new Variable <int>("Index", 0));
            a.Variables.Add(new Variable <int>("Total", 0));
            a.Selector = selector.ToString();

            var last = selector.Last() as IESelectorItem;

            a.Image = last.Element.ImageString();


            var tagName = htmlelement.tagName;

            if (string.IsNullOrEmpty(tagName))
            {
                tagName = "";
            }
            tagName = tagName.ToLower();
            e.a     = new GetElementResult(a);
            //if (tagName == "input")
            //{
            //    // MSHTML.IHTMLInputElement inputelement = (MSHTML.IHTMLInputElement)htmlelement;
            //    e.SupportInput = (last.type.ToLower() == "text" || last.type.ToLower() == "password");
            //}
            // if (htmlelement.tagName.ToLower() == "input" && htmlelement.tagName.ToLower() == "select")
            if (htmlelement.tagName.ToLower() == "input")
            {
                MSHTML.IHTMLInputElement inputelement = (MSHTML.IHTMLInputElement)htmlelement;
                e.SupportInput = (inputelement.type.ToLower() == "text" || inputelement.type.ToLower() == "password");
            }
            e.SupportSelect = htmlelement.tagName.ToLower() == "select";
            return(true);
        }
Пример #8
0
        private void ParseMouseUp(InputEventArgs e)
        {
            try
            {
                // if(string.IsNullOrEmpty(Thread.CurrentThread.Name)) Thread.CurrentThread.Name = "IE.Plugin.OnMouseUP";
                Log.Debug(string.Format("IE.Recording::OnMouseUp::begin"));
                var re = new RecordEvent
                {
                    Button = e.Button
                }; var a = new GetElement {
                    DisplayName = (e.Element.Name).Replace(Environment.NewLine, "").Trim()
                };
                a.Variables.Add(new Variable <int>("Index", 0));
                a.Variables.Add(new Variable <int>("Total", 0));

                using (var p = System.Diagnostics.Process.GetProcessById(e.Element.ProcessId))
                {
                    if (p.ProcessName != "iexplore" && p.ProcessName != "iexplore.exe")
                    {
                        return;
                    }
                }

                var browser     = new Browser();
                var htmlelement = browser.ElementFromPoint(e.X, e.Y);
                if (htmlelement == null)
                {
                    return;
                }

                var sw = new System.Diagnostics.Stopwatch();
                sw.Start();
                IESelector sel = null;
                // sel = new IESelector(e.Element.rawElement, null, true);
                GenericTools.RunUI(() =>
                {
                    try
                    {
                        sel = new IESelector(browser, htmlelement, null, false, e.X, e.Y);
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex.ToString());
                    }
                });
                if (sel == null)
                {
                    return;
                }
                if (sel.Count < 2)
                {
                    return;
                }
                a.Selector   = sel.ToString();
                a.Image      = sel.Last().Element.ImageString();
                re.UIElement = e.Element;
                re.Element   = new IEElement(browser, htmlelement);
                re.Selector  = sel;
                re.X         = e.X;
                re.Y         = e.Y;

                Log.Debug(e.Element.SupportInput + " / " + e.Element.ControlType);
                re.a = new GetElementResult(a);
                //if (htmlelement.tagName.ToLower() == "input" && htmlelement.tagName.ToLower() == "select")
                if (htmlelement.tagName.ToLower() == "input")
                {
                    MSHTML.IHTMLInputElement inputelement = (MSHTML.IHTMLInputElement)htmlelement;
                    re.SupportInput = (inputelement.type.ToLower() == "text" || inputelement.type.ToLower() == "password");
                }
                re.SupportSelect = false;
                Log.Debug(string.Format("IE.Recording::OnMouseUp::end {0:mm\\:ss\\.fff}", sw.Elapsed));
                OnUserAction?.Invoke(this, re);
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
            }
        }