コード例 #1
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IRenderedWebElement dragger = (IRenderedWebElement)finder.FindElement(driver, locator);
            IRenderedWebElement draggee = (IRenderedWebElement)finder.FindElement(driver, value);

            dragger.DragAndDropOn(draggee);

            return(null);
        }
コード例 #2
0
ファイル: MouseEvent.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element = finder.FindElement(driver, locator);

            JavaScriptLibrary.CallEmbeddedSelenium(driver, "triggerMouseEvent", element, type, true);
            return(null);
        }
コード例 #3
0
ファイル: Check.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element = finder.FindElement(driver, locator);

            element.Select();
            return(null);
        }
コード例 #4
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element = finder.FindElement(driver, locator);

            element.Clear();

            throw new InvalidOperationException("attachFile");
        }
コード例 #5
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            string[] parts  = value.Split(new string[] { "," }, 2, StringSplitOptions.None);
            int      deltaX = int.Parse(parts[0], CultureInfo.InvariantCulture);
            int      deltaY = int.Parse(parts[1], CultureInfo.InvariantCulture);

            ((IRenderedWebElement)finder.FindElement(driver, locator)).DragAndDropBy(deltaX, deltaY);

            return(null);
        }
コード例 #6
0
ファイル: GetAttribute.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            int    attributePos   = locator.LastIndexOf("@", StringComparison.Ordinal);
            string elementLocator = locator.Substring(0, attributePos);
            string attributeName  = locator.Substring(attributePos + 1);

            // Find the element.
            IWebElement element = finder.FindElement(driver, elementLocator);

            return(element.GetAttribute(attributeName));
        }
コード例 #7
0
ファイル: Uncheck.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored)
        {
            IWebElement element = finder.FindElement(driver, locator);

            if (element.Selected == true)
            {
                element.Toggle();
            }

            return(null);
        }
コード例 #8
0
ファイル: TypeKeys.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            value = value.Replace("\\38", Keys.ArrowUp);
            value = value.Replace("\\40", Keys.ArrowDown);
            value = value.Replace("\\37", Keys.ArrowLeft);
            value = value.Replace("\\39", Keys.ArrowRight);

            finder.FindElement(driver, locator).SendKeys(value);

            return(null);
        }
コード例 #9
0
        public List <string> GetOptions(IWebDriver driver, string selectLocator, Property property, bool fetchAll)
        {
            IWebElement element = finder.FindElement(driver, selectLocator);
            ReadOnlyCollection <IWebElement> options = element.FindElements(By.TagName("option"));

            if (options.Count == 0)
            {
                throw new SeleniumException("Specified element is not a Select (has no options)");
            }

            List <string> selectedOptions = new List <string>();

            foreach (IWebElement option in options)
            {
                if (fetchAll || option.Selected)
                {
                    switch (property)
                    {
                    case Property.Text:
                        selectedOptions.Add(option.Text);
                        break;

                    case Property.Value:
                        selectedOptions.Add(option.Value);
                        break;

                    case Property.ID:
                        selectedOptions.Add(option.GetAttribute("id"));
                        break;

                    case Property.Index:
                        // TODO(simon): Implement this in the IE driver as "getAttribute"
                        object result = ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].index", option);
                        selectedOptions.Add(result.ToString());
                        break;
                    }
                }
            }

            return(selectedOptions);
        }
コード例 #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SeleniumSelect"/> class.
        /// </summary>
        /// <param name="finder">An <see cref="ElementFinder"/> used in finding options.</param>
        /// <param name="driver">An <see cref="IWebDriver"/> used to drive the browser.</param>
        /// <param name="locator">A locator used to find options.</param>
        public SeleniumSelect(ElementFinder finder, IWebDriver driver, string locator)
        {
            this.driver = driver;

            this.findOption = "return (" + JavaScriptLibrary.GetSeleniumScript("findOption.js") + ").apply(null, arguments)";

            this.select = finder.FindElement(driver, locator);
            if (this.select.TagName.ToLowerInvariant() != "select")
            {
                throw new SeleniumException("Element is not a select element: " + locator);
            }
        }
コード例 #11
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement one = finder.FindElement(driver, locator);
            IWebElement two = finder.FindElement(driver, value);

            string ordered =
                "    if (arguments[0] === arguments[1]) return false;\n" +
                "\n" +
                "    var previousSibling;\n" +
                "    while ((previousSibling = arguments[1].previousSibling) != null) {\n" +
                "        if (previousSibling === arguments[0]) {\n" +
                "            return true;\n" +
                "        }\n" +
                "        arguments[1] = previousSibling;\n" +
                "    }\n" +
                "    return false;\n";

            bool?result = (bool)JavaScriptLibrary.ExecuteScript(driver, ordered, one, two);

            return(result != null && result.Value);
        }
コード例 #12
0
ファイル: AddSelection.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element = finder.FindElement(driver, locator);

            if (!SeleniumOptionSelector.IsMultiSelect(element))
            {
                throw new SeleniumException("You may only add a selection to a select that supports multiple selections");
            }

            selector.Select(driver, locator, value, true, false);
            return(null);
        }
コード例 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SeleniumSelect"/> class.
        /// </summary>
        /// <param name="finder">An <see cref="ElementFinder"/> used in finding options.</param>
        /// <param name="driver">An <see cref="IWebDriver"/> used to drive the browser.</param>
        /// <param name="locator">A locator used to find options.</param>
        public SeleniumSelect(ElementFinder finder, IWebDriver driver, string locator)
        {
            this.driver = driver;

            this.findOption = "return (" + JavaScriptLibrary.GetSeleniumScript("findOption.js") + ").apply(null, arguments)";

            this.select = finder.FindElement(driver, locator);
            if (this.select.TagName.ToLowerInvariant() != "select")
            {
                throw new SeleniumException("Element is not a select element: " + locator);
            }
        }
コード例 #14
0
 protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
 {
     try
     {
         finder.FindElement(driver, locator);
         return true;
     }
     catch (SeleniumException)
     {
         return false;
     }
 }
コード例 #15
0
ファイル: KeyEvent.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            object[] parameters = new object[]
            {
                value,
                keyState.ControlKeyDown,
                keyState.AltKeyDown,
                keyState.ShiftKeyDown,
                keyState.MetaKeyDown
            };

            JavaScriptLibrary.CallEmbeddedSelenium(driver, eventName, finder.FindElement(driver, locator), parameters);

            return(null);
        }
コード例 #16
0
ファイル: IsEditable.cs プロジェクト: anthrax3/selenium-2
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element           = finder.FindElement(driver, locator);
            string      tagName           = element.TagName.ToUpperInvariant();
            bool        acceptableTagName = tagName == "INPUT" || tagName == "SELECT";
            string      readOnlyAttribute = string.Empty;

            if (tagName == "INPUT")
            {
                readOnlyAttribute = element.GetAttribute("readonly");
                if (readOnlyAttribute != null && readOnlyAttribute == "false")
                {
                    readOnlyAttribute = string.Empty;
                }
            }

            return(element.Enabled && acceptableTagName && string.IsNullOrEmpty(readOnlyAttribute));
        }
コード例 #17
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement select = finder.FindElement(driver, locator);
            ReadOnlyCollection <IWebElement> options = select.FindElements(By.TagName("option"));

            string multiple = select.GetAttribute("multiple");

            if (string.IsNullOrEmpty(multiple))
            {
                return(null);
            }

            foreach (IWebElement option in options)
            {
                if (option.Selected)
                {
                    option.Toggle();
                }
            }

            return(null);
        }
コード例 #18
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            if (state.ControlKeyDown || state.AltKeyDown || state.MetaKeyDown)
            {
                throw new SeleniumException("type not supported immediately after call to controlKeyDown() or altKeyDown() or metaKeyDown()");
            }

            string stringToType = state.ShiftKeyDown ? value.ToUpperInvariant() : value;

            IWebElement         element  = finder.FindElement(driver, locator);
            IJavaScriptExecutor executor = driver as IJavaScriptExecutor;

            if (executor != null && executor.IsJavaScriptEnabled)
            {
                JavaScriptLibrary.CallEmbeddedSelenium(driver, "replaceText", element, stringToType);
            }
            else
            {
                element.SendKeys(stringToType);
            }

            return(null);
        }
コード例 #19
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            string tableString = string.Empty;

            if (!TableParts.IsMatch(locator))
            {
                throw new SeleniumException("Invalid target format. Correct format is tableName.rowNum.columnNum");
            }

            Match  tableMatch = TableParts.Match(locator);
            string tableName  = tableMatch.Groups[0].Value;
            long   row        = int.Parse(tableMatch.Groups[1].Value, CultureInfo.InvariantCulture);
            long   col        = int.Parse(tableMatch.Groups[2].Value, CultureInfo.InvariantCulture);

            IWebElement table = finder.FindElement(driver, tableName);

            string script =
                "var table = arguments[0]; var row = arguments[1]; var col = arguments[2];" +
                "if (row > table.rows.length) { return \"Cannot access row \" + row + \" - table has \" + table.rows.length + \" rows\"; }" +
                "if (col > table.rows[row].cells.length) { return \"Cannot access column \" + col + \" - table row has \" + table.rows[row].cells.length + \" columns\"; }" +
                "return table.rows[row].cells[col];";

            object      returnValue     = JavaScriptLibrary.ExecuteScript(driver, script, table, row, col);
            IWebElement elementReturned = returnValue as IWebElement;

            if (elementReturned != null)
            {
                tableString = ((IWebElement)returnValue).Text.Trim();
            }
            else
            {
                throw new SeleniumException(returnValue.ToString());
            }

            return(tableString);
        }
コード例 #20
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            Point location = ((IRenderedWebElement)finder.FindElement(driver, locator)).Location;

            return(location.X);
        }
コード例 #21
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            JavaScriptLibrary.CallEmbeddedHtmlUtils(driver, "highlight", finder.FindElement(driver, locator));

            return(null);
        }
コード例 #22
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            IWebElement element = finder.FindElement(driver, locator);

            return(JavaScriptLibrary.ExecuteScript(driver, ElementIndexFinderScript, element));
        }
コード例 #23
0
 protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
 {
     JavaScriptLibrary.ExecuteScript(driver, "arguments[0].id = arguments[1]", finder.FindElement(driver, locator), value);
     return(null);
 }
コード例 #24
0
ファイル: GetValue.cs プロジェクト: anthrax3/selenium-2
 protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
 {
     return(finder.FindElement(driver, locator).Value);
 }
コード例 #25
0
ファイル: IsVisible.cs プロジェクト: anthrax3/selenium-2
 protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored)
 {
     return(((IRenderedWebElement)finder.FindElement(driver, locator)).Displayed);
 }
コード例 #26
0
 protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored)
 {
     return(finder.FindElement(driver, locator).Text);
 }
コード例 #27
0
        protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value)
        {
            Size size = ((IRenderedWebElement)finder.FindElement(driver, locator)).Size;

            return(size.Width);
        }