Example #1
0
        /// <summary>
        /// Clicks or sets a web page select tag option.
        /// </summary>
        /// <param name="pathToDOM">Ranorex.Core.Repository.RepoGenBaseFolder.BaseBath of a web page DOM.</param>
        /// <param name="selecttag">Ranorex.SelectTag of a web page select tag.</param>
        /// <param name="option">option to select in select tag.</param>
        public static void ChooseSelectTagOption(string pathToDOM, Ranorex.SelectTag selecttag, string option)
        {
            WebDocument domWebDocument = pathToDOM;

            string selectTagValueForOption = null;
            switch (domWebDocument.BrowserName)
            {
                case "Chrome":
                case "Safari":
                case "Mozilla":
                    //Using Chrome and Safari select tag with mouse problematic. So select using keyboard.
                    //For Mozilla, OptionTag.Visible does not return the correct value for an option tag that is not visible. So select using keyboard.
                    selectTagValueForOption = FindSelectTagValueForOption(selecttag, option);
                    SelectTagValueWithKeyboard(selecttag, selectTagValueForOption);
                    break;
                case "IE":
                    //Click option if visible after clicking select tag.
                    String itemToClickRxPath = String.Format("/container[@caption='selectbox']/listitem[@accessiblename='{0}']",option);

                    selecttag.Focus();
                    selecttag.Click();

                    ListItem itemToClick;
                    try
                    {
                        itemToClick = itemToClickRxPath;
                    }
                    catch (Exception e)
                    {
                        throw new ArgumentException(string.Format("Unable to find option {0} in SelectTag {1}. Exception:{2}", option, selecttag.Name,e), "option");
                    }

                    if (itemToClick.Visible)
                    {
                        itemToClick.Click();
                        break;
                    }
                    //If not visible, select using keyboard.
                    selectTagValueForOption = FindSelectTagValueForOption(selecttag, option);
                    //Close Select Tag box.
                    selecttag.Click();
                    SelectTagValueWithKeyboard(selecttag, selectTagValueForOption);
                    break;
                default:
                    throw new Exception(String.Format("Browser not supported: {0}", domWebDocument.BrowserName));
            }
        }
Example #2
0
 /// <summary>
 /// Selects a select tag option by pressing the DOWN key until the option is selected, starting at the top of the options.
 /// </summary>
 /// <param name="selecttag">Ranorex.SelectTag containing the option to select.</param>
 /// <param name="tagValueToSelect">Value of the option in the Ranorex.SelectTag.</param>
 private static void SelectTagValueWithKeyboard(Ranorex.SelectTag selecttag, string tagValueToSelect)
 {
     if (selecttag.TagValue == tagValueToSelect)
     {
         //Current tag value is already the value to select.
         return;
     }
     //Press Down key until current option is requested option, starting at the top option.
     Duration previousDefaultKeyPressTime = Keyboard.DefaultKeyPressTime;
     Keyboard.DefaultKeyPressTime = 10;
     selecttag.Focus();
     Keyboard.Press("{HOME}");
     IList<OptionTag> tagOptions = selecttag.Options;
     string lastSelectTagOptionValue = tagOptions[tagOptions.Count - 1].TagValue;
     bool tagOptionSelected=false;
     while (!tagOptionSelected)
     {
         if (selecttag.TagValue == tagValueToSelect)
         {
             tagOptionSelected=true;
         }
         else
         {
             if (selecttag.TagValue == lastSelectTagOptionValue)
             {
                 //On last option so tag value not found.
                 break;
             }
             //Give selecttag.TagValue time to update after changing the select tag option using the keyboard.
             const int timeOutMilliseconds = 5000;
             int timeOutRemainingMilliseconds = timeOutMilliseconds;
             int delayMilliseconds = 100;
             string previousTagValue = selecttag.TagValue;
             Keyboard.Press("{DOWN}");
             while (selecttag.TagValue == previousTagValue)
             {
                 Ranorex.Delay.Milliseconds(delayMilliseconds);
                 timeOutRemainingMilliseconds-=delayMilliseconds;
                 if (timeOutRemainingMilliseconds<=0)
                 {
                     throw new Exception(string.Format("SelectTag {0} tag value did not change within {1} milliseconds after pressing DOWN key. Current selecttag.TagValue:{2}",selecttag.Name,timeOutMilliseconds.ToString(),selecttag.TagValue));
                 }
             }
         }
     }
     if (!tagOptionSelected)
     {
         throw new ArgumentException(string.Format("None of the selected SelectTag {0} options had a TagValue of {1}", selecttag.Name, tagValueToSelect), "tagValueToSelect");
     }
     Keyboard.DefaultKeyPressTime = previousDefaultKeyPressTime;
 }