/// <summary> /// <para>Use an <param name="individualTimeout" /> for everything you do within an <param name="action" /> - temporarilly overriding the <see cref="Configuration.Timeout"/></para> /// <para>For when you need an unusually long (or short) timeout for a particular interaction.</para> /// <para>E.g.: /// <code> /// session.FillIn("Attachment").With(@"c:\coypu\bigfile.mp4"); /// session.Click("Upload"); /// session.WithIndividualTimeout(Timespan.FromSeconds(60), () => session.ClickButton("Delete bigfile.mp4")); /// </code> /// </para> /// </summary> public void WithIndividualTimeout(TimeSpan individualTimeout, Action action) { temporaryTimeouts.WithIndividualTimeout <object>(individualTimeout, () => { action(); return(null); }); }
internal State FindState(params State[] states) { var foundState = robustWrapper.Query(() => temporaryTimeouts.WithIndividualTimeout(TimeSpan.Zero, () => states.Any(s => s.CheckCondition())), true); if (!foundState) { throw new MissingHtmlException("None of the given states was reached within the configured timeout."); } return(states.First(e => e.ConditionWasMet)); }