internal WaitThenClick(Driver driver, Options options, Waiter waiter, ElementFinder elementFinder) : base(driver, options) { this.options = options; this.waiter = waiter; this.elementFinder = elementFinder; }
internal DriverScope(SessionConfiguration sessionConfiguration, ElementFinder elementFinder, IDriver driver, TimingStrategy timingStrategy, Waiter waiter, UrlBuilder urlBuilder, DisambiguationStrategy disambiguationStrategy) { _driver = driver; _elementFinder = elementFinder ?? new DocumentElementFinder(driver, sessionConfiguration); DisambiguationStrategy = disambiguationStrategy; SessionConfiguration = sessionConfiguration; StateFinder = new StateFinder(timingStrategy); TimingStrategy = timingStrategy; UrlBuilder = urlBuilder; Waiter = waiter; }
protected override Response GetResponse(AutomationElement automationElement, CommandEnvironment environment, Dictionary <string, object> parameters, System.Threading.CancellationToken cancellationToken) { if (!parameters.TryGetValue("using", out var mechanism)) { return(Response.CreateMissingParametersResponse("using")); } if (!parameters.TryGetValue("value", out var criteria)) { return(Response.CreateMissingParametersResponse("value")); } Tuple <string, AutomationElement> element = null; var elementFinder = new ElementFinder(mechanism.ToString(), criteria.ToString()); if (Regex.IsMatch(criteria.ToString(), @"^\/\/Window(\[|$)")) // TODO ugly disgusting hack { element = environment.Cache.FindElements(environment.RootElement, elementFinder, cancellationToken).FirstOrDefault(); } else { element = environment.Cache.FindElements(automationElement, elementFinder, cancellationToken).FirstOrDefault(); } if (element == null) { var errorMessage = $"No such element found using {mechanism} and criteria '{criteria}' in the control tree with element with AutomationId='{automationElement.Current.AutomationId}' as root."; throw new NoSuchElementException(errorMessage); } environment.Cache.AddToCache(element); return(new Response { Status = WebDriverStatusCode.Success, SessionId = environment.SessionId, Value = new Dictionary <string, object> { { CommandEnvironment.ElementObjectKey, element.Item1 }, { string.Empty, element.Item2.Current.AutomationId } } }); }
/// <summary> /// Uses the specified delegate to find all matching elements attached to the specified parent element. If /// no matches are found, create a new element and return it. If one match is found, remove any existing /// elements/attributes and return it. If more than one match is found, return null to indicate an error. /// </summary> private static XElement GetElement(ElementFinder finder, XElement parentElement, XName elementName) { var elements = finder(parentElement); switch (elements.Count()) { case 0: var createdElement = new XElement(elementName); parentElement.Add(createdElement); return(createdElement); case 1: var existingElement = elements.First(); existingElement.RemoveAll(); return(existingElement); default: // This is unexpected. The caller is responsible for logging an error. return(null); } }
/// <inheritdoc /> protected override TableBodyCollection CreateFilteredCollection(ElementFinder elementFinder) { return(new TableBodyCollection(DomContainer, elementFinder)); }
private IParameterElementFinder FindInstancePointer() { return(ElementFinder.FindParameters().Take(InstancePointerPosition).FirstOrDefault()); }
public MyButton(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
internal ElementScope(ElementFinder elementFinder, DriverScope outerScope) : base(elementFinder, outerScope) { }
protected static ElementFound FindSingle(ElementFinder finder) { return(DisambiguationStrategy.ResolveQuery(finder)); }
/// <inheritdoc /> protected override LabelCollection CreateFilteredCollection(ElementFinder elementFinder) { return(new LabelCollection(DomContainer, elementFinder)); }
/// <summary> /// Initializes a new instance of the <see cref="RadioButtonCollection"/> class. /// Mainly used by WatiN internally. /// </summary> /// <param name="domContainer">The DOM container.</param> /// <param name="finder">The finder.</param> public RadioButtonCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
/// <summary> /// Initializes a new instance of the <see cref="ListCollection"/> class. /// Mainly used by WatiN internally. /// </summary> /// <param name="domContainer">The DOM container.</param> /// <param name="finder">The finder.</param> public ListCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
public void Given_a_radio_group_has_no_selected_radio_button() { ElementFinder .OptionalElement(Arg.Any <By.jQueryBy>()) .Returns(null as IWebElement); }
internal DeferredElementScope(ElementFinder elementFinder, DriverScope outer) : base(elementFinder, outer) { }
public MyButtonWithNoElementTag(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
public TestElementSameTagButInherited(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
internal RobustElementScope(ElementFinder elementFinder, DriverScope outerScope, Options options) : base(elementFinder, outerScope) { this.options = options; }
internal BrowserWindow(SessionConfiguration SessionConfiguration, ElementFinder elementFinder, Driver driver, RobustWrapper robustWrapper, Waiter waiter, UrlBuilder urlBuilder) : base(SessionConfiguration, elementFinder, driver, robustWrapper, waiter, urlBuilder) { }
protected static ElementFound FindSingle(ElementFinder finder) { return DisambiguationStrategy.ResolveQuery(finder); }
/// <inheritdoc /> protected override OptionCollection CreateFilteredCollection(ElementFinder elementFinder) { return new OptionCollection(DomContainer, elementFinder); }
public TextFieldExtended(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
internal WaitThenClick(Driver driver, DriverScope scope, Options options, Waiter waiter, ElementFinder elementFinder, DisambiguationStrategy disambiguationStrategy) : base(driver, scope, options) { waitBeforeClick = options.WaitBeforeClick; this.waiter = waiter; this.elementFinder = elementFinder; this.disambiguationStrategy = disambiguationStrategy; }
/// <summary> /// Initializes a new instance of the <see cref="TextFieldCollection"/> class. /// Mainly used by WatiN internally. /// </summary> /// <param name="domContainer">The DOM container.</param> /// <param name="finder">The finder.</param> public TextFieldCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
/// <summary> /// Initializes a new instance of the <see cref="FileUploadCollection"/> class. /// Mainly used by WatiN internally. /// </summary> /// <param name="domContainer">The DOM container.</param> /// <param name="finder">The finder.</param> public FileUploadCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
/// <inheritdoc /> protected override RadioButtonCollection CreateFilteredCollection(ElementFinder elementFinder) { return(new RadioButtonCollection(DomContainer, elementFinder)); }
/// <summary> /// Initializes a new instance of the <see cref="CheckBoxCollection"/> class. /// Mainly used by WatiN internally. /// </summary> /// <param name="domContainer">The DOM container.</param> /// <param name="finder">The finder.</param> public CheckBoxCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
internal BrowserWindow(ElementFinder elementFinder, DriverScope outerScope) : base(elementFinder, outerScope) { }
protected override IEnumerable <IParameterElementFinder> FindMethodParameters() { return(ElementFinder.FindParameters().Skip(InstancePointerPosition)); }
private string MapName() { return(ElementFinder.FindName()); }
public FieldSet(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
/// <summary> /// Runs the action with the specified web driver. /// </summary> /// <param name="driver">The driver.</param> public override void Run(IWebDriver driver) { var finder = new ElementFinder(driver); switch (Condition) { case Condition.Contains: if (Value.Equals(string.Empty)) { finder.FindAll(Path).First(x => x.Text.Contains(Text)).Click(); } else { finder.FindAll(Path).First(x => x.GetAttribute("value").Contains(Text)).Click(); } break; case Condition.Equals: if (Value.Equals(string.Empty)) { finder.FindAll(Path).First(x => x.Text.Equals(Text)).Click(); } else { finder.FindAll(Path).First(x => x.GetAttribute("value").Equals(Text)).Click(); } break; case Condition.StartsWith: if (Value.Equals(string.Empty)) { finder.FindAll(Path).First(x => x.Text.StartsWith(Text)).Click(); } else { finder.FindAll(Path).First(x => x.GetAttribute("value").StartsWith(Text)).Click(); } break; } }
public TableBodyCollection(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder) { }
private static void Finds_elements_among_multiple_scopes(ElementFinder elementFinder1, ElementFinder elementFinder2) { var iframeOne = new BrowserWindow(DefaultSessionConfiguration, elementFinder1, Driver, null, null, null, DisambiguationStrategy); var iframeTwo = new BrowserWindow(DefaultSessionConfiguration, elementFinder2, Driver, null, null, null, DisambiguationStrategy); Button("scoped button", iframeOne, DefaultOptions).Id.should_be("iframe1ButtonId"); Button("scoped button", iframeTwo, DefaultOptions).Id.should_be("iframe2ButtonId"); }
internal BrowserWindow(SessionConfiguration SessionConfiguration, ElementFinder elementFinder, Driver driver, TimingStrategy timingStrategy, Waiter waiter, UrlBuilder urlBuilder, DisambiguationStrategy disambiguationStrategy) : base(SessionConfiguration, elementFinder, driver, timingStrategy, waiter, urlBuilder, disambiguationStrategy) { }
/// <inheritdoc /> public override ListCollection CreateFilteredCollection(ElementFinder elementFinder) { return(new ListCollection(DomContainer, elementFinder)); }
/// <summary> /// Initializes a new instance of the <see cref="IsChecked"/> class. /// </summary> /// <param name="finder">An <see cref="ElementFinder"/> used to find the element on which to execute the command.</param> public IsChecked(ElementFinder finder) { this.finder = finder; }