Example #1
0
        public WebElementDefinition GetWebElementDefinitionFromForm()
        {
            var element = new WebElementDefinition()
            {
                Name        = txtWebElementName.Text,
                HtmlId      = txtHtmlId.Text,
                CssSelector = txtCssSelector.Text,
                Xpath       = txtXPath.Text,
                HowToSearch = GetLocatorSearchMethod(),
                Locator     = GetLocatorText(),

                ReturnsCollection = chkReturnsListOfWebElements.Checked,

                // Properties
                HtmlTag = txtPropHtmlTag.Text,
                AllHtmlTagProperties = txtAllElementHtmlProps.Tag != null
                                       ? txtAllElementHtmlProps.Tag as WebElementHtmlAttributes
                                       : new WebElementHtmlAttributes(),

                // Custom Args
                Arg1 = txtPropArg1.Text,
                Arg2 = txtPropArg2.Text,
                Arg3 = txtPropArg3.Text,
            };

            return(element);
        }
        internal void UpdatePageDefinition(WebElementDefinition element, bool forceAddNew)
        {
            var results = new List <ValidationResult>();
            var context = new ValidationContext(element, null, null);

            bool isValid = Validator.TryValidateObject(element, context, results, true);

            if (!isValid)
            {
                var validationMessage = String.Join("\n", results.Select(t => String.Format("- {0}", t.ErrorMessage)));
                view.DisplayMessage("Validation Error", validationMessage);
                return;
            }

            if (forceAddNew)
            {
                view.AddToPageDefinitions(element);
                NotifyOnChanges();
                return;
            }

            if (_isEditingExistingNode)
            {
                view.UpdateExistingPageDefinition(_currentEditingNode, element);
                NotifyOnChanges();
            }
            else
            {
                _isEditingExistingNode = true;
                _currentEditingNode    = view.AddToPageDefinitions(element);
                NotifyOnChanges();
            }
        }
Example #3
0
        public void ProcessCommands()
        {
            var command = WebSpyBrowser.GetNextCommand();

            if (command is GetXPathFromElement)
            {
                var getXPathCommand = command as GetXPathFromElement;
                view.UpdateVisualSearchResult(getXPathCommand.XPathValue);
            }
            else if (command is AddElement)
            {
                var addElementCommand = command as AddElement;

                SimpleFrame      simpleFrame;
                BrowserPageFrame browserPageFrame = view.getCurrentlyChosenFrame();
                if (browserPageFrame != null)
                {
                    List <string> childs = new List <string>();
                    string        parentTitle;
                    if (browserPageFrame.ParentFrame != null)
                    {
                        parentTitle = browserPageFrame.ParentFrame.GetTitle();
                    }
                    else
                    {
                        parentTitle = "none";
                    }
                    if (browserPageFrame.ChildFrames != null)
                    {
                        foreach (BrowserPageFrame b in browserPageFrame.ChildFrames)
                        {
                            childs.Add(b.GetTitle());
                        }
                    }

                    simpleFrame = new SimpleFrame(browserPageFrame.Index, browserPageFrame.LocatorNameOrId, browserPageFrame.GetTitle(), parentTitle, childs);
                }
                else
                {
                    simpleFrame = new SimpleFrame(-1, "noFrameChosen", "noFrameChosen", "noFrameChosen", null);
                }

                bool emptyHtmlId = String.IsNullOrEmpty(addElementCommand.ElementId);
                var  element     = new WebElementDefinition()
                {
                    Name        = addElementCommand.ElementCodeName,
                    HtmlId      = addElementCommand.ElementId,
                    Xpath       = addElementCommand.ElementXPath,
                    HowToSearch = (emptyHtmlId) ? LocatorSearchMethod.XPath: LocatorSearchMethod.Id,
                    Locator     = (emptyHtmlId) ? addElementCommand.ElementXPath: addElementCommand.ElementId,
                    CssSelector = addElementCommand.ElementCssSelector,
                    frame       = simpleFrame,
                    Action      = addElementCommand.Action
                };
                bool addNew = true;
                Presenters.SelectorsEditPresenter.UpdateWebElementWithAdditionalProperties(element);
                Presenters.PageObjectDefinitionPresenter.UpdatePageDefinition(element, addNew);
            }
        }
Example #4
0
        internal void UpdateWebElementForm(WebElementDefinition formData)
        {
            ClearWebElementForm();
            txtWebElementName.Text = formData.Name;

            // Fill with the formData
            txtCssSelector.Text = formData.CssSelector;
            txtHtmlId.Text      = formData.HtmlId;
            txtXPath.Text       = formData.Xpath;


            switch (formData.HowToSearch)
            {
            case LocatorSearchMethod.Id:
                txtHtmlId.Text     = formData.Locator;
                rbtnHtmlId.Checked = true;
                break;

            case LocatorSearchMethod.CssSelector:
                txtCssSelector.Text     = formData.Locator;
                rbtnCssSelector.Checked = true;
                break;

            case LocatorSearchMethod.XPath:
                txtXPath.Text     = formData.Locator;
                rbtnXPath.Checked = true;
                break;

            default:
                string itemToSelect = "";
                switch (formData.HowToSearch)
                {
                case LocatorSearchMethod.Name: itemToSelect = otherLocator_Name; break;

                case LocatorSearchMethod.TagName: itemToSelect = otherLocator_TagName; break;

                case LocatorSearchMethod.ClassName: itemToSelect = otherLocator_ClassName; break;

                case LocatorSearchMethod.LinkText: itemToSelect = otherLocator_LinkText; break;

                case LocatorSearchMethod.PartialLinkText: itemToSelect = otherLocator_PartialLinkText; break;
                }
                if (!String.IsNullOrEmpty(itemToSelect))
                {
                    txtOtherLocator.Text          = formData.Locator;
                    rbtnOtherLocator.Checked      = true;
                    ddlOtherLocator.SelectedIndex = Array.IndexOf(otherLocatorListItems, itemToSelect);
                }
                break;
            }

            chkReturnsListOfWebElements.Checked = formData.ReturnsCollection;

            UpdateElementPropertiesForm(formData);
        }
Example #5
0
        internal void HighLightWebElement(WebElementDefinition element)
        {
            if (!IsValidForm())
            {
                return;
            }

            var by = WebSpyBrowser.ConvertLocatorSearchMethodToBy(element.HowToSearch, element.Locator);

            WebSpyBrowser.HighlightElement(by);
        }
        internal void ShowPropertiesForNode(TreeNode treeNode)
        {
            WebElementDefinition element = (treeNode.Tag as WebElementDefinition);

            WebElementDefinition readOnlyElement = element.Clone();

            TypeDescriptor.AddAttributes(readOnlyElement, new Attribute[] { new ReadOnlyAttribute(true) });
            element = readOnlyElement;

            view.propPageElement.SelectedObject = readOnlyElement;
        }
Example #7
0
        internal void UpdateElementPropertiesForm(WebElementDefinition sourceElement)
        {
            var element = sourceElement.Clone();

            txtPropHtmlTag.Text = element.HtmlTag;

            StringBuilder htmlProperties = new StringBuilder();

            foreach (KeyValuePair <string, string> item in element.AllHtmlTagProperties)
            {
                htmlProperties.AppendFormat("{0}=\"{1}\";", item.Key, item.Value);
            }

            txtAllElementHtmlProps.Text = htmlProperties.ToString();
            txtAllElementHtmlProps.Tag  = element.AllHtmlTagProperties;

            txtPropArg1.Text = element.Arg1 ?? "";
            txtPropArg2.Text = element.Arg2 ?? "";
            txtPropArg3.Text = element.Arg3 ?? "";
        }
 internal void removeElementFromObjectPage(WebElementDefinition element)
 {
     if (_isEditingExistingNode)
     {
         DialogResult dr = MessageBox.Show("Do you want to remove the element which is named as " + _currentEditingNode.Text + "?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
         if (dr == DialogResult.Yes)
         {
             view.DeleteExistingElementFromPage(_currentEditingNode);
             NotifyOnChanges();
         }
         else
         {
             return;
         }
     }
     else
     {
         MessageBox.Show("Can not remove if element hasn't been ever saved. ", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }
Example #9
0
        private IEnumerable <MethodAutocompleteItem> BuildMethodsListForWebElement(WebElementDefinition webElementDefinition)
        {
            IEnumerable <string> IWebElementMethods    = GetListOfMethods(typeof(IWebElement));
            IEnumerable <string> IWebElementProperties = GetListOfProperties(typeof(IWebElement));


            List <MethodAutocompleteItem> result = new List <MethodAutocompleteItem>();

            foreach (var propName in IWebElementProperties)
            {
                result.Add(new MethodAutocompleteItem(propName));
            }

            foreach (var methodName in IWebElementMethods)
            {
                result.Add(new MethodAutocompleteItem(methodName + "( );"));
            }

            return(result);
        }
Example #10
0
        public void UpdateWebElementWithAdditionalProperties(WebElementDefinition element)
        {
            var by         = WebSpyBrowser.ConvertLocatorSearchMethodToBy(element.HowToSearch, element.Locator);
            var attributes = new Dictionary <string, string>();

            try
            {
                attributes = WebSpyBrowser.ReadElementAttributes(by);
            }
            catch (Exception e)
            {
                string errorMsg = string.Format(
                    "UpdateWebElementWithAdditionalProperties:\n" +
                    "Failed to find element: How={0};   Locator={1}\n" +
                    "With exception:\n {2}"
                    , element.HowToSearch.ToString()
                    , element.Locator.ToString()
                    , e.Message

                    );
                MyLog.Error(errorMsg);
            }


            if (attributes.Count == 0)
            {
                return;
            }

            element.HtmlTag = attributes["TagName"];
            attributes.Remove("TagName");

            WebElementHtmlAttributes elementAttrs = new WebElementHtmlAttributes();

            foreach (var attrKey in attributes.Keys)
            {
                elementAttrs.Add(attrKey, attributes[attrKey]);
            }

            element.AllHtmlTagProperties = elementAttrs;
        }
Example #11
0
        public void ProcessCommands()
        {
            var command = SwdBrowser.GetNextCommand();
            if (command is GetXPathFromElement)
            {
                var getXPathCommand = command as GetXPathFromElement;
                view.UpdateVisualSearchResult(getXPathCommand.XPathValue);
            }
            else if (command is AddElement)
            {
                var addElementCommand = command as AddElement;

                var element = new WebElementDefinition()
                {
                    Name = addElementCommand.ElementCodeName,
                    HowToSearch = LocatorSearchMethod.XPath,
                    Locator = addElementCommand.ElementXPath,
                };
                bool addNew = true;
                Presenters.SelectorsEditPresenter.UpdateWebElementWithAdditionalProperties(element);
                Presenters.PageObjectDefinitionPresenter.UpdatePageDefinition(element, addNew);
            }
        }
        internal TreeNode AddToPageDefinitions(WebElementDefinition element)
        {
            var newNode = new TreeNode();
            newNode.Text = element.ToString();
            newNode.Tag = element;

            var action = (MethodInvoker)delegate
            {

                tvWebElements.Nodes[0].Nodes.Add(newNode);
                newNode.EnsureVisible();
            };

            if (tvWebElements.InvokeRequired)
            {
                tvWebElements.Invoke(action);
            }
            else
            {
                action();
            }

            return newNode;
        }
        public WebElementDefinition GetWebElementDefinitionFromForm()
        {
            var element = new WebElementDefinition()
            {
                Name = txtWebElementName.Text,
                HowToSearch = GetLocatorSearchMethod(),
                Locator = GetLocatorText(),

                ReturnsCollection = chkReturnsListOfWebElements.Checked,

                // Properties
                HtmlTag = txtPropHtmlTag.Text,
                AllHtmlTagProperties = txtAllElementHtmlProps.Tag != null
                                       ? txtAllElementHtmlProps.Tag as WebElementHtmlAttributes
                                       : new WebElementHtmlAttributes(),

                // Custom Args
                Arg1 = txtPropArg1.Text,
                Arg2 = txtPropArg2.Text,
                Arg3 = txtPropArg3.Text,

            };
            return element;
        }
        internal void UpdateWebElementForm(WebElementDefinition formData)
        {
            ClearWebElementForm();
            txtWebElementName.Text = formData.Name;

             // Fill with the formData
             txtCssSelector.Text = formData.CssSelector;

            // override the setting with possibly modified value
            switch (formData.HowToSearch)
            {
                case LocatorSearchMethod.Id:
                    txtHtmlId.Text = formData.Locator;
                    rbtnHtmlId.Checked = true;
                    break;
                case LocatorSearchMethod.CssSelector:
                    txtCssSelector.Text = formData.Locator;
                    rbtnCssSelector.Checked = true;
                    break;
                case LocatorSearchMethod.XPath:
                    txtXPath.Text = formData.Locator;
                    rbtnXPath.Checked = true;
                    break;
                default:
                    string itemToSelect = "";
                    switch (formData.HowToSearch)
                    {
                        case LocatorSearchMethod.Name: itemToSelect = otherLocator_Name; break;
                        case LocatorSearchMethod.TagName: itemToSelect = otherLocator_TagName; break;
                        case LocatorSearchMethod.ClassName: itemToSelect = otherLocator_ClassName; break;
                        case LocatorSearchMethod.LinkText: itemToSelect = otherLocator_LinkText; break;
                        case LocatorSearchMethod.PartialLinkText: itemToSelect = otherLocator_PartialLinkText; break;
                    }
                    if (!String.IsNullOrEmpty(itemToSelect))
                    {
                        txtOtherLocator.Text = formData.Locator;
                        rbtnOtherLocator.Checked = true;
                        ddlOtherLocator.SelectedIndex = Array.IndexOf(otherLocatorListItems, itemToSelect);
                    }
                    break;
            }

            chkReturnsListOfWebElements.Checked = formData.ReturnsCollection;

            UpdateElementPropertiesForm(formData);
        }
        internal void UpdateElementPropertiesForm(WebElementDefinition sourceElement)
        {
            var element = sourceElement.Clone();

            txtPropHtmlTag.Text = element.HtmlTag;

            StringBuilder htmlProperties = new StringBuilder();
            foreach (KeyValuePair<string, string> item in element.AllHtmlTagProperties)
            {
                htmlProperties.AppendFormat("{0}=\"{1}\";", item.Key, item.Value);
            }

            txtAllElementHtmlProps.Text = htmlProperties.ToString();
            txtAllElementHtmlProps.Tag = element.AllHtmlTagProperties;

            txtPropArg1.Text = element.Arg1 ?? "";
            txtPropArg2.Text = element.Arg2 ?? "";
            txtPropArg3.Text = element.Arg3 ?? "";
        }
        internal void UpdateExistingPageDefinition(TreeNode existingNode, WebElementDefinition element)
        {
            var action = (MethodInvoker)delegate
            {
                existingNode.Text = element.ToString();
                existingNode.Tag = element;
                existingNode.EnsureVisible();
            };

            if (tvWebElements.InvokeRequired)
            {
                tvWebElements.Invoke(action);
            }
            else
            {
                action();
            }
        }
 internal void UpdatePageDefinition(WebElementDefinition element)
 {
     UpdatePageDefinition(element, false);
 }
Example #18
0
 internal void ReadElementProperties(WebElementDefinition element)
 {
     UpdateWebElementWithAdditionalProperties(element);
     view.UpdateElementPropertiesForm(element);
 }
Example #19
0
 internal void RemoveWebElement(WebElementDefinition element)
 {
     Presenters.PageObjectDefinitionPresenter.removeElementFromObjectPage(element);
 }
        public void ProcessCommands()
        {
            var command = SwdBrowser.GetNextCommand();
            if (command is GetXPathFromElement)
            {
                var getXPathCommand = command as GetXPathFromElement;
                view.UpdateVisualSearchResult(getXPathCommand.XPathValue);
            }
            else if (command is AddElement)
            {
                var addElementCommand = command as AddElement;

                SimpleFrame simpleFrame;
                BrowserPageFrame browserPageFrame = view.getCurrentlyChosenFrame();
                if (browserPageFrame != null)
                {
                    List<string> childs = new List<string>();
                    string parentTitle;
                    if (browserPageFrame.ParentFrame != null)
                    {
                        parentTitle = browserPageFrame.ParentFrame.GetTitle();
                    }
                    else
                    {
                        parentTitle = "none";
                    }
                    if (browserPageFrame.ChildFrames != null)
                    {
                        foreach (BrowserPageFrame b in browserPageFrame.ChildFrames)
                        {
                            childs.Add(b.GetTitle());
                        }
                    }

                    simpleFrame = new SimpleFrame(browserPageFrame.Index, browserPageFrame.LocatorNameOrId, browserPageFrame.GetTitle(), parentTitle, childs);
                }
                else
                {
                    simpleFrame = new SimpleFrame(-1, "noFrameChosen", "noFrameChosen", "noFrameChosen", null);
                }

                var element = new WebElementDefinition()
                {
                    Name = addElementCommand.ElementCodeName,
                    HowToSearch = LocatorSearchMethod.XPath,
                    Locator = addElementCommand.ElementXPath,
                    CssSelector = addElementCommand.ElementCssSelector,
                    frame = simpleFrame,
                };
                bool addNew = true;
                MyPresenters.SelectorsEditPresenter.UpdateWebElementWithAdditionalProperties(element);
                MyPresenters.PageObjectDefinitionPresenter.UpdatePageDefinition(element, addNew);
            }
        }