Example #1
0
        protected override async Task <ResponseInfo> MakeRequest(InterationContext context)
        {
            var url         = PrepareValue(context, Config.Url);
            var webAccessor = context.WebAccessor;

            return(await webAccessor.GetAsync(url));
        }
Example #2
0
        public override async Task <InteractionResult> ExecuteAsync(InterationContext context)
        {
            var response = default(ResponseInfo);

            try
            {
                response = await MakeRequest(context);
            }
            catch (Exception e)
            {
                return(new InteractionResult {
                    Ok = false, Message = e.Message
                });
            }

            var pageInfo = new PageInfo(response.Url, response.Html);

            context.CurrentPage = pageInfo;
            context.Outputs     = GetOutputValues(pageInfo);

            if (!ValidateOutput(context.Outputs, out string message))
            {
                return(new InteractionResult {
                    Ok = false, Message = message
                });
            }

            return(new InteractionResult {
                Ok = true
            });
        }
Example #3
0
        protected override async Task <ResponseInfo> MakeRequest(InterationContext context)
        {
            var config = Config;
            var page   = context.CurrentPage;
            var form   = GetForm(page);

            if (form == null)
            {
                throw new Exception("No form ws found");
            }

            var formValues  = MergeFormValues(context, form, config.FormValues);
            var webAccessor = context.WebAccessor;

            var url = PrepareValue(context, page.Url);

            if (!string.IsNullOrEmpty(form.Action))
            {
                if (form.Action.StartsWith("/"))
                {
                    var uri = new Uri(url);
                    url = uri.GetLeftPart(UriPartial.Authority) + form.Action;
                }
                else
                {
                    var pos = url.LastIndexOf("/");
                    url = url.Substring(0, pos + 1) + form.Action;
                }
            }

            return(await webAccessor.PostAsync(url, formValues));
        }
Example #4
0
 public override Task <InteractionResult> ExecuteAsync(InterationContext context)
 {
     return(Task.FromResult(new InteractionResult
     {
         Ok = true,
         Target = Config.Target
     }));
 }
Example #5
0
        public override async Task <InteractionResult> ExecuteAsync(InterationContext context)
        {
            var value = GetValue(context, Config.Property);

            if (string.Compare(value, Config.Value, true) != 0)
            {
                return(await Task.FromResult(new InteractionResult
                {
                    Ok = true
                }));
            }

            return(await Child.ExecuteAsync(context));
        }
Example #6
0
        private NameValueCollection MergeFormValues(InterationContext context, FormInfo form, FormValue[] formValues)
        {
            var finalFormValues = form.FormValues;

            foreach (var v in formValues)
            {
                if (!string.IsNullOrEmpty(v.Value))
                {
                    finalFormValues[v.Name] = this.PrepareValue(context, v.Value);
                }
                else if (!string.IsNullOrEmpty(v.Text))
                {
                    finalFormValues[v.Name] = form.GetSelectedValueByText(v.Name, this.PrepareValue(context, v.Text));
                }
            }

            return(finalFormValues);
        }
Example #7
0
 protected abstract Task <ResponseInfo> MakeRequest(InterationContext context);