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;
 }
Exemple #3
0
        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 }
                }
            });
        }
Exemple #4
0
        /// <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));
 }
Exemple #6
0
 private IParameterElementFinder FindInstancePointer()
 {
     return(ElementFinder.FindParameters().Take(InstancePointerPosition).FirstOrDefault());
 }
 public MyButton(DomContainer domContainer, ElementFinder finder) : base(domContainer, finder)
 {
 }
Exemple #8
0
 internal ElementScope(ElementFinder elementFinder, DriverScope outerScope)
     : base(elementFinder, outerScope)
 {
 }
Exemple #9
0
 protected static ElementFound FindSingle(ElementFinder finder)
 {
     return(DisambiguationStrategy.ResolveQuery(finder));
 }
Exemple #10
0
 /// <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)
 {
 }
Exemple #12
0
 /// <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)
 {
 }
Exemple #15
0
 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)
 {
 }
Exemple #19
0
 protected static ElementFound FindSingle(ElementFinder finder)
 {
     return DisambiguationStrategy.ResolveQuery(finder);
 }
 /// <inheritdoc />
 protected override OptionCollection CreateFilteredCollection(ElementFinder elementFinder)
 {
     return new OptionCollection(DomContainer, elementFinder);
 }
Exemple #21
0
 public TextFieldExtended(DomContainer domContainer, ElementFinder finder)
     : base(domContainer, finder)
 {
 }
Exemple #22
0
 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)
 {
 }
Exemple #27
0
 internal BrowserWindow(ElementFinder elementFinder,
                        DriverScope outerScope) : base(elementFinder, outerScope)
 {
 }
Exemple #28
0
 internal RobustElementScope(ElementFinder elementFinder, DriverScope outerScope, Options options)
     : base(elementFinder, outerScope)
 {
     this.options = options;
 }
Exemple #29
0
 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)
 {
 }
Exemple #34
0
        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");
        }
Exemple #35
0
 internal BrowserWindow(SessionConfiguration SessionConfiguration, ElementFinder elementFinder, Driver driver, RobustWrapper robustWrapper, Waiter waiter, UrlBuilder urlBuilder)
     : base(SessionConfiguration, elementFinder, driver, robustWrapper, waiter, urlBuilder)
 {
 }
Exemple #36
0
 internal BrowserWindow(SessionConfiguration SessionConfiguration, ElementFinder elementFinder, Driver driver, TimingStrategy timingStrategy, Waiter waiter, UrlBuilder urlBuilder, DisambiguationStrategy disambiguationStrategy)
     : base(SessionConfiguration, elementFinder, driver, timingStrategy, waiter, urlBuilder, disambiguationStrategy)
 {
 }
Exemple #37
0
 /// <inheritdoc />
 public override ListCollection CreateFilteredCollection(ElementFinder elementFinder)
 {
     return(new ListCollection(DomContainer, elementFinder));
 }
Exemple #38
0
 /// <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;
 }