public void SetWindowProperties(WatinScript watscript, string BrowserName, IHTMLElement element) { wscript = watscript; browsername = BrowserName; currentelement = element; this.Text = string.Format(Properties.Resources.FunctionExplorer, element.GetType().ToString()); IHTMLDOMNode node = element as IHTMLDOMNode; lbAttributes.Items.Clear(); lbAttributes.Items.Add(string.Format("tagName={0}", element.tagName), false); string strValue = ""; string strFindMethod = wscript.GetFindMethod(element, ref strValue); foreach (IHTMLDOMAttribute attr in node.attributes) { if (attr.specified) { if (strFindMethod.ToLower() == attr.nodeName.ToLower()) { lbAttributes.Items.Add(attr.nodeName + "=" + attr.nodeValue, true); } else { lbAttributes.Items.Add(attr.nodeName + "=" + attr.nodeValue, false); } } } lbAttributes.Items.Add("innerHTML=" + element.innerHTML, false); if (strFindMethod == "innertext") { lbAttributes.Items.Add("innerText=" + element.innerText, true); } else { lbAttributes.Items.Add("innerText=" + element.innerText, false); } lbAttributes.Items.Add("outerHTML=" + element.outerHTML, false); lbAttributes.Items.Add("outerText=" + element.outerText, false); json = CreateJSONData(element); LoadTabs(element); }
public void SetWindowProperties(WatinScript watscript, string BrowserName, IHTMLElement element) { wscript = watscript; browsername = BrowserName; currentelement = element; this.Text = string.Format(Properties.Resources.FunctionExplorer,element.GetType().ToString()); IHTMLDOMNode node = element as IHTMLDOMNode; lbAttributes.Items.Clear(); lbAttributes.Items.Add(string.Format("tagName={0}",element.tagName), false); string strValue = ""; string strFindMethod = wscript.GetFindMethod(element, ref strValue); foreach (IHTMLDOMAttribute attr in node.attributes) { if (attr.specified) { if (strFindMethod.ToLower()==attr.nodeName.ToLower()) { lbAttributes.Items.Add(attr.nodeName + "=" + attr.nodeValue, true); } else { lbAttributes.Items.Add(attr.nodeName + "=" + attr.nodeValue, false); } } } lbAttributes.Items.Add("innerHTML="+element.innerHTML, false); if (strFindMethod=="innertext") { lbAttributes.Items.Add("innerText=" + element.innerText, true); } else { lbAttributes.Items.Add("innerText=" + element.innerText, false); } lbAttributes.Items.Add("outerHTML=" + element.outerHTML, false); lbAttributes.Items.Add("outerText=" + element.outerText, false); json = CreateJSONData(element); LoadTabs(element); }
private IHTMLElement getFirstValidSelectionElement(IHTMLElement intialElement) { // Recursively expand the element outward until a valid containing element is // found. If none is found, return null. if (Array.IndexOf(this.validSelectionElementClassNames(), intialElement.GetType().Name) >= 0) { // This current element is valid as a container for an anchor element: return intialElement; } else { /* * The current element is not a valid container, but may be the * child of either an anchor, or a valid anchor container: */ if (Array.IndexOf(this.CheckParentSelectionElementClassNames(), intialElement.GetType().Name) >= 0) { IHTMLElement parent = intialElement.parentElement; // If the parent belongs to either group, recurse: if (Array.IndexOf(this.validSelectionElementClassNames(), parent.GetType().Name) >= 0 || Array.IndexOf(this.CheckParentSelectionElementClassNames(), parent.GetType().Name) >= 0) { return this.getFirstValidSelectionElement(parent); } else { // Otherise, return what we have (which may be invalid) return intialElement; } } else { // Nothing was found to be a valid anchor container: return null; } } }
/// <summary> /// Returns an anchor element if one is contained within the element passed in. otherwise returns null. /// </summary> /// <param name="initialElement"></param> /// <returns></returns> private IHTMLElement getAnchorFromSelection(IHTMLElement initialElement) { if (initialElement.GetType().Name == "HTMLAnchorElementClass") { return initialElement; } else { // See if the current element is potentially a child within an anchor element: if (Array.IndexOf(this.CheckParentSelectionElementClassNames(), initialElement.GetType().Name) >= 0) { IHTMLElement parent = initialElement.parentElement; // The parent of the current element may be an anchor, or may itself be a child of an anchor: if (parent.GetType().Name == "HTMLAnchorElementClass" || Array.IndexOf(this.CheckParentSelectionElementClassNames(), parent.GetType().Name) >= 0) { return this.getAnchorFromSelection(parent); } else { return null; } } else { return null; } } }
public void SetWindowProperties(WatinScript watscript, string BrowserName, IHTMLElement element) { tabControl1.SelectedTab = pageMethods; wscript = watscript; browsername = BrowserName; currentelement = element; this.Text = "Property Explorer - " + element.GetType().ToString(); IHTMLDOMNode node = element as IHTMLDOMNode; gridProperties.Rows.Add("tagName", element.tagName); foreach (IHTMLDOMAttribute attr in node.attributes) { if (attr.specified) { gridProperties.Rows.Add(attr.nodeName, attr.nodeValue); } } gridProperties.Rows.Add("innerHTML", element.innerHTML); gridProperties.Rows.Add("innerText", element.innerText); gridProperties.Rows.Add("outerHTML", element.outerHTML); gridProperties.Rows.Add("outerText", element.outerText); rbSelectByText.Enabled = false; comboSelectByText.Enabled = false; rbSelectByValue.Enabled = false; comboSelectByValue.Enabled = false; rbSetFilename.Enabled = false; txtSetFilename.Enabled = false; btnSetFilename.Enabled = false; rbChecked.Enabled = false; rbUnchecked.Enabled = false; string tagtype = watscript.ActiveElementAttribute(element, "type").ToLower(); if (element.tagName.ToLower() == "input" && tagtype == "file") { rbSetFilename.Enabled = true; txtSetFilename.Enabled = true; btnSetFilename.Enabled = true; } else if (element.tagName.ToLower() == "input" && (tagtype == "radio" || tagtype == "checkbox")) { rbChecked.Enabled = true; rbUnchecked.Enabled = true; } else if (element.tagName.ToLower() == "select") { rbSelectByText.Enabled = true; comboSelectByText.Enabled = true; rbSelectByValue.Enabled = true; comboSelectByValue.Enabled = true; comboSelectByText.Items.Clear(); comboSelectByValue.Items.Clear(); mshtml.IHTMLSelectElement sel = element as mshtml.IHTMLSelectElement; if (sel==null) { return; } for (int i = 0; i < sel.length; i++) { mshtml.IHTMLOptionElement op = sel.item(i, i) as mshtml.IHTMLOptionElement; comboSelectByText.Items.Add(op.text); if (op.value==null) { comboSelectByText.Items.Add(op.text); } else { comboSelectByValue.Items.Add(op.value); } } } }
//combobox events for form items #region ComboBox Events private void cboIEWindow_SelectionChangeCommitted(object sender, EventArgs e) { var shellWindows = new ShellWindows(); foreach (IWebBrowser2 shellWindow in shellWindows) { if (shellWindow.Document is HTMLDocument) { if (shellWindow.Document.Title == cboIEWindow.Text) { _ie = shellWindow.Application; var events = (HTMLDocumentEvents2_Event)_ie.Document; events.onclick += (evt) => { _searchParameters = new DataTable(); _searchParameters.Columns.Add("Enabled"); _searchParameters.Columns.Add("Property Name"); _searchParameters.Columns.Add("Property Value"); if (evt.srcElement is IHTMLElement) { IHTMLElement srcInfo = evt.srcElement; var elementProperties = srcInfo.GetType().GetProperties(); foreach (PropertyInfo prp in elementProperties) { var propIsString = prp.PropertyType == typeof(string); var propIsInt = prp.PropertyType == typeof(int); if ((propIsString || propIsInt) && !prp.Name.Contains("IHTML")) { string propName = prp.Name; string propValue = Convert.ToString(prp.GetValue(srcInfo)); _searchParameters.Rows.Add(false, propName, propValue); } } dgvSearchParameters.Invoke(new MethodInvoker(() => { dgvSearchParameters.DataSource = _searchParameters; }) ); } return(false); }; var windowName = cboIEWindow.Text + " - Internet Explorer"; User32Functions.ActivateWindow(windowName); User32Functions.MoveWindow(windowName, "0", "0"); MoveFormToBottomRight(this); TopMost = true; foreach (Form frm in Application.OpenForms) { if (frm.Name != Name) { frm.WindowState = FormWindowState.Minimized; } } } } } }
//combobox events for form items #region ComboBox Events private void cboIEWindow_SelectionChangeCommitted(object sender, EventArgs e) { var shellWindows = new ShellWindows(); foreach (IWebBrowser2 shellWindow in shellWindows) { if (shellWindow.Document is MSHTML.HTMLDocument) { if (shellWindow.Document.Title == cboIEWindow.Text) { ie = shellWindow.Application; var events = (HTMLDocumentEvents2_Event)ie.Document; events.onclick += (evt) => { searchParameters = new DataTable(); searchParameters.Columns.Add("Enabled"); searchParameters.Columns.Add("Property Name"); searchParameters.Columns.Add("Property Value"); if (evt.srcElement is IHTMLElement) { IHTMLElement srcInfo = evt.srcElement; var elementProperties = srcInfo.GetType().GetProperties(); foreach (System.Reflection.PropertyInfo prp in elementProperties) { if ((prp.PropertyType == typeof(string)) && (!prp.Name.Contains("IHTML")) || (prp.PropertyType == typeof(int)) && (!prp.Name.Contains("IHTML"))) { string propName = prp.Name; string propValue = Convert.ToString(prp.GetValue(srcInfo)); searchParameters.Rows.Add(false, propName, propValue); } } dgvSearchParameters.Invoke((MethodInvoker)(() => dgvSearchParameters.DataSource = searchParameters)); } return(false); }; var activateWindow = new Core.AutomationCommands.ActivateWindowCommand(); activateWindow.v_WindowName = cboIEWindow.Text + " - Internet Explorer"; activateWindow.RunCommand(null); var moveWindow = new Core.AutomationCommands.MoveWindowCommand(); moveWindow.v_WindowName = cboIEWindow.Text + " - Internet Explorer"; moveWindow.v_XWindowPosition = "0"; moveWindow.v_YWindowPosition = "0"; moveWindow.RunCommand(null); MoveFormToBottomRight(this); this.TopMost = true; foreach (Form frm in Application.OpenForms) { if (frm.Name != this.Name) { frm.WindowState = FormWindowState.Minimized; } } } } } }
public void SetWindowProperties(WatinScript watscript, string BrowserName, IHTMLElement element) { tabControl1.SelectedTab = pageMethods; wscript = watscript; browsername = BrowserName; currentelement = element; this.Text = "Property Explorer - " + element.GetType().ToString(); IHTMLDOMNode node = element as IHTMLDOMNode; gridProperties.Rows.Add("tagName", element.tagName); foreach (IHTMLDOMAttribute attr in node.attributes) { if (attr.specified) { gridProperties.Rows.Add(attr.nodeName, attr.nodeValue); } } gridProperties.Rows.Add("innerHTML", element.innerHTML); gridProperties.Rows.Add("innerText", element.innerText); gridProperties.Rows.Add("outerHTML", element.outerHTML); gridProperties.Rows.Add("outerText", element.outerText); rbSelectByText.Enabled = false; comboSelectByText.Enabled = false; rbSelectByValue.Enabled = false; comboSelectByValue.Enabled = false; rbSetFilename.Enabled = false; txtSetFilename.Enabled = false; btnSetFilename.Enabled = false; rbChecked.Enabled = false; rbUnchecked.Enabled = false; string tagtype = watscript.ActiveElementAttribute(element, "type").ToLower(); if (element.tagName.ToLower() == "input" && tagtype == "file") { rbSetFilename.Enabled = true; txtSetFilename.Enabled = true; btnSetFilename.Enabled = true; } else if (element.tagName.ToLower() == "input" && (tagtype == "radio" || tagtype == "checkbox")) { rbChecked.Enabled = true; rbUnchecked.Enabled = true; } else if (element.tagName.ToLower() == "select") { rbSelectByText.Enabled = true; comboSelectByText.Enabled = true; rbSelectByValue.Enabled = true; comboSelectByValue.Enabled = true; comboSelectByText.Items.Clear(); comboSelectByValue.Items.Clear(); mshtml.IHTMLSelectElement sel = element as mshtml.IHTMLSelectElement; if (sel == null) { return; } for (int i = 0; i < sel.length; i++) { mshtml.IHTMLOptionElement op = sel.item(i, i) as mshtml.IHTMLOptionElement; comboSelectByText.Items.Add(op.text); if (op.value == null) { comboSelectByText.Items.Add(op.text); } else { comboSelectByValue.Items.Add(op.value); } } } }