/// <summary> /// Waits for an attribute /// </summary> /// <param name="attribute"></param> /// <param name="pattern"></param> /// <param name="timeout"></param> /// <returns></returns> public WebElement WaitAttribute(string attribute, string pattern, int timeout = -1) { var regex = new Regex(pattern, RegexOptions.IgnoreCase); _session.SendUntil(timeout, () => this.Attribute(attribute), (r) => regex.IsMatch((string)r) ); return(this); }
/// <summary> /// Returns all the web elements matching the given method and value /// </summary> private WebElements FindAllElements(Strategy strategy, string value, int minimum, int timeout) { RemoteSession session = this.session; string uri = this.uri + "/elements"; try { var method = By.FormatStrategy(strategy); List elements = session.SendUntil(timeout, () => (List)session.Send(RequestMethod.POST, uri, "using", method, "value", value), (r) => r.Count >= minimum ); return(new WebElements(session, elements)); } catch (Errors.TimeoutError) { throw new Errors.NoSuchElementError(strategy, value); } }