Пример #1
0
        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);
        }
Пример #2
0
        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;
                }
            }
        }
Пример #5
0
        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;
                            }
                        }
                    }
                }
            }
        }
Пример #7
0
        //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;
                            }
                        }
                    }
                }
            }
        }
Пример #8
0
        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);
                    }
                }
            }
        }