示例#1
0
 /// <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);
     });
 }
示例#2
0
        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));
        }