public IEElement(Browser browser, MSHTML.IHTMLElement Element) { Browser = browser; RawElement = Element; className = Element.className; id = Element.id; tagName = Element.tagName.ToLower(); if (tagName == "input") { MSHTML.IHTMLInputElement inputelement = Element as MSHTML.IHTMLInputElement; type = inputelement.type.ToLower(); } try { MSHTML.IHTMLUniqueName id = RawElement as MSHTML.IHTMLUniqueName; uniqueID = id.uniqueID; } catch (Exception) { } IndexInParent = -1; if (Element.parentElement != null && !string.IsNullOrEmpty(uniqueID)) { MSHTML.IHTMLElementCollection children = Element.parentElement.children; for (int i = 0; i < children.length; i++) { MSHTML.IHTMLUniqueName id = children.item(i) as MSHTML.IHTMLUniqueName; if (id != null && id.uniqueID == uniqueID) { IndexInParent = i; break; } } } }
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.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"); } Log.Debug(string.Format("IE.Recording::OnMouseUp::end {0:mm\\:ss\\.fff}", sw.Elapsed)); OnUserAction?.Invoke(this, re); })); thread.IsBackground = true; thread.Start(); }
public IEElement(Browser browser, MSHTML.IHTMLElement Element) { Browser = browser; RawElement = Element; ClassName = Element.className; Id = Element.id; TagName = Element.tagName.ToLower(); Name = ""; try { if (!(RawElement.getAttribute("Name") is System.DBNull)) { Name = (string)RawElement.getAttribute("Name"); } } catch (Exception) { } if (TagName == "option") { var option = Element as MSHTML.IHTMLOptionElement; Name = option.text; } if (TagName == "input") { MSHTML.IHTMLInputElement inputelement = Element as MSHTML.IHTMLInputElement; Type = inputelement.type.ToLower(); } try { MSHTML.IHTMLUniqueName id = RawElement as MSHTML.IHTMLUniqueName; UniqueID = id.uniqueID; } catch (Exception) { } IndexInParent = -1; if (Element.parentElement != null && !string.IsNullOrEmpty(UniqueID)) { MSHTML.IHTMLElementCollection children = (MSHTML.IHTMLElementCollection)Element.parentElement.children; for (int i = 0; i < children.length; i++) { if (children.item(i) is MSHTML.IHTMLUniqueName id && id.uniqueID == UniqueID) { IndexInParent = i; break; } } } }
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); }
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()); } }