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); }
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); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { IWebElement element = finder.FindElement(driver, locator); element.Select(); return(null); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { IWebElement element = finder.FindElement(driver, locator); element.Clear(); throw new InvalidOperationException("attachFile"); }
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); }
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)); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored) { IWebElement element = finder.FindElement(driver, locator); if (element.Selected == true) { element.Toggle(); } return(null); }
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); }
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); }
/// <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); } }
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); }
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); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { try { finder.FindElement(driver, locator); return true; } catch (SeleniumException) { return false; } }
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); }
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)); }
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); }
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); }
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); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { Point location = ((IRenderedWebElement)finder.FindElement(driver, locator)).Location; return(location.X); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { JavaScriptLibrary.CallEmbeddedHtmlUtils(driver, "highlight", finder.FindElement(driver, locator)); return(null); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { IWebElement element = finder.FindElement(driver, locator); return(JavaScriptLibrary.ExecuteScript(driver, ElementIndexFinderScript, element)); }
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); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { return(finder.FindElement(driver, locator).Value); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored) { return(((IRenderedWebElement)finder.FindElement(driver, locator)).Displayed); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string ignored) { return(finder.FindElement(driver, locator).Text); }
protected override object HandleSeleneseCommand(IWebDriver driver, string locator, string value) { Size size = ((IRenderedWebElement)finder.FindElement(driver, locator)).Size; return(size.Width); }