Пример #1
0
        public static List <SpecItem> Parse(string url)
        {
            return(PhantomJsUtils.Process(driver =>
            {
                driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));
                driver.Navigate().GoToUrl(url);
                var pageSource = driver.PageSource;
                var docuemnt = new HtmlDocument();
                docuemnt.LoadHtml(pageSource);

                var items = new List <SpecItem>();

                var specNames = docuemnt.DocumentNode.CssSelect(".product-spec-wrap .product-spec__name-inner");
                var specValues = docuemnt.DocumentNode.CssSelect(".product-spec-wrap .product-spec__value-inner");

                for (int i = 0; i < specNames.Count(); i++)
                {
                    var specName = specNames.ElementAt(i);
                    var name = specName.InnerHtml.Split("<".ToCharArray()).First();
                    var specValue = specValues.ElementAt(i);
                    var value = HttpUtility.HtmlDecode(specValue.InnerHtml).Trim();

                    var item = new SpecItem
                    {
                        Name = name,
                        Value = value
                    };

                    items.Add(item);
                }

                return items;
            }));
        }
Пример #2
0
        public ActionResult <string> SetData(SpecItemModifyModel data)
        {
            var newData = new SpecItem()
            {
                SpecItemID     = data.SpecItemID,
                SeqID          = data.SeqID,
                SystemID       = data.SystemID,
                ItemName       = data.ItemName,
                TestTemp       = data.TestTemp,
                TestInfo       = data.TestInfo,
                ComputeSetting = data.ComputeSetting,
                OrderID        = data.OrderID
            };

            try
            {
                if (repository.SaveData(newData))
                {
                    return(ActionResult <string> .SetSuccess($"保存 {ItemName} 成功", "保存成功"));
                }
                else
                {
                    return(ActionResult <string> .SetError($"{ItemName} 已经被删除", "保存失败"));
                }
            }
            catch (Exception ex)
            {
                return(ActionResult <string> .SetError(ex.Message, "保存失败"));
            }
        }
Пример #3
0
        public void should_add_params_when_assign_link_url()
        {
            var spec = new SpecItem();

            spec.LinkUrl = "/a/b/c?a=c&b=d&mm=ss&d=";

            Assert.Equal(4, spec.Params.Count);
        }
Пример #4
0
        public void should_add_host_if_contains_port()
        {
            var spec = new SpecItem();

            var host1 = "http://a.a.com:8080";

            spec.AddHost(host1);

            Assert.Equal(1, spec.Hosts.Count);
        }
Пример #5
0
 public async Task <int> SaveSpecItem(SpecItem modelVM)
 {
     try
     {
         return(await StdRepo.ExcuteStoredProcedureToSave <SpecItem>(GlobalSPNames.SaveSpecItemSPName, modelVM));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #6
0
        public void should_not_add_same_host_with_the_name()
        {
            var spec = new SpecItem();

            var host1 = "http://a.a.com";

            spec.AddHost(host1);
            spec.AddHost(host1);
            spec.AddHost(host1);
            spec.AddHost(host1);

            Assert.Equal(1, spec.Hosts.Count);
        }
Пример #7
0
        public void should_not_add_parameter_if_exist_when_assign_url()
        {
            var spec = new SpecItem();

            var p = new Param {
                Name = "a", Value = "b"
            };

            spec.AddParameter(p.Name, p.Value);

            spec.LinkUrl = "/a/b/c?a=c";

            Assert.Equal(1, spec.Params.Count);
        }
Пример #8
0
        public void should_not_add_same_parameter()
        {
            var spec = new SpecItem();

            var p = new Param {
                Name = "a", Value = "b"
            };

            spec.AddParameter(p.Name, p.Value);
            spec.AddParameter(p.Name, p.Value);
            spec.AddParameter(p.Name, p.Value);
            spec.AddParameter(p.Name, p.Value);

            Assert.Equal(1, spec.Params.Count);
        }
Пример #9
0
 public async Task <HttpResponseMessage> SaveSpecItem(SpecItem modelVM, int action)
 {
     try
     {
         string username      = RequestContext.Principal.Identity.Name;
         string clientAddress = HttpContext.Current.Request.UserHostAddress;
         modelVM.IpAddress = clientAddress;
         return(Request.CreateResponse(HttpStatusCode.OK, await corepo.SaveSpecItem(modelVM)));
     }
     catch (Exception ex)
     {
         LogHelper.WriteLog(HttpContext.Current.Request, ex, RequestContext.Principal.Identity.Name);
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
     }
 }
Пример #10
0
        public SpecItem Under_watching_is_false()
        {
            var item = new SpecItem();

            item.Name        = "google";
            item.FixtureType = FixtureType.Html;
            item.Hosts       = new List <SpecHost>();

            item.Results = new List <Result>();
            item.Results.Add(new Result {
                Value = "(function()", DataType = ResultType.String, Opertaion = OP.Include
            });

            item.Hosts.Add(new SpecHost
            {
                Name = "http://www.baidu.com",
                Port = 80,
            });

            return(item);
        }
Пример #11
0
        public SpecItem should_contain_function_text()
        {
            var item = new SpecItem();

            item.Name        = "google";
            item.FixtureType = FixtureType.Html;
            item.Hosts       = new List <SpecHost>();

            item.Results = new List <Result>();
            item.Results.Add(new Result {
                Value = "baidu", DataType = ResultType.String, Opertaion = OP.Include
            });

            item.Hosts.Add(new SpecHost
            {
                Name = "http://www.baidu.com",
                Port = 80,
            });

            return(item);
        }
Пример #12
0
        public SpecItem should_throw_exception_if_the_check_failed()
        {
            var item = new SpecItem();

            item.Name        = "app.ff501";
            item.FixtureType = FixtureType.Html;
            item.Hosts       = new List <SpecHost>();

            item.Results = new List <Result>();
            item.Results.Add(new Result {
                Value = "username333", DataType = ResultType.String, Opertaion = OP.Include
            });

            item.Hosts.Add(new SpecHost
            {
                Name = "http://app.ff501.com",
                Port = 80,
            });

            return(item);
        }
Пример #13
0
        public void LoadData(Guid pSpecItemID, SpecItem specitem, string tempSetting, Action <SpecItem> cback)
        {
            callback                = cback;
            vm.Model.SpecItemID     = specitem.SpecItemID;
            vm.Model.SeqID          = specitem.SeqID;
            vm.Model.SystemID       = specitem.SystemID;
            vm.Model.ItemName       = specitem.ItemName;
            vm.Model.TestTemp       = specitem.TestTemp;
            vm.Model.TestInfo       = specitem.TestInfo;
            vm.Model.ComputeSetting = specitem.ComputeSetting;
            vm.Model.OrderID        = specitem.OrderID;

            //设置窗体标题
            if (pSpecItemID == Guid.Empty)
            {
                this.Text = $"添加{ModifySpecItem.ItemName}";
            }
            else
            {
                this.Text = $"修改{ModifySpecItem.ItemName} - {specitem.ItemName}";
            }

            var temps = tempSetting.Split(",");

            vm.Render(panelContent, new Padding(0, 15, 15, 0), "100%", true,
                      (name, control) =>
            {
                switch (name)
                {
                case "TestTemp":
                    var ds1 = (control as ComboBox).DataSource as BindingList <KeyValuePair <string, string> >;
                    foreach (var temp in temps)
                    {
                        if (string.IsNullOrEmpty(temp))
                        {
                            continue;
                        }
                        ds1.Add(new KeyValuePair <string, string>(temp, temp));
                    }
                    break;

                case "ItemName":
                    control.Enabled = false;
                    break;

                case "ComputeSetting":
                    var data = vm.Model.ComputeSetting.FromJsonString <Dictionary <int, ComputeSettingItem> >();
                    if (data == null)
                    {
                        return;
                    }
                    control.Visible = false;
                    var left        = control.Left;
                    var top         = control.Top;

                    cbSpec = new ComboBox()
                    {
                        FormattingEnabled = true,
                        Location          = new Point(left, top),
                        Name          = "cbSpec",
                        Size          = new Size(76, 20),
                        ValueMember   = "Key",
                        DisplayMember = "Value",
                        DataSource    = new BindingCollection <KeyValuePair <string, string> >(OperatorManager.GetComputeDataSource())
                    };
                    panelContent.Controls.Add(cbSpec);
                    top  += 30;
                    var r = 0;
                    foreach (var resultitem in BaseSettingsManager.Get <ResultSettings>().NeedSettingResult)
                    {
                        var lbSpec = new Label()
                        {
                            Name     = string.Format("lbSpec{0}", resultitem.ResultID),
                            AutoSize = true,
                            Location = new Point(left, top + 5 + 30 * r),
                            Text     = resultitem.ResultName
                        };
                        var tbSpec = new TextBox()
                        {
                            Name     = string.Format("tbSpec{0}", resultitem.ResultID),
                            Size     = new Size(100, 21),
                            Location = new Point(left + 115, top + 30 * r),
                        };
                        panelContent.Controls.Add(lbSpec);
                        panelContent.Controls.Add(tbSpec);
                        tbSpecs[resultitem.ResultID] = tbSpec;
                        r++;
                    }

                    foreach (var item in data)
                    {
                        cbSpec.Text = item.Value.ComputeSign;
                        if (tbSpecs.ContainsKey(item.Key))
                        {
                            tbSpecs[item.Key].Text = item.Value.ComputeValue;
                        }
                    }
                    break;
                }
            },
                      null);
        }
Пример #14
0
        private void btSave_Click(object sender, EventArgs e)
        {
            var computeSetting = new Dictionary <int, ComputeSettingItem>();
            var sign           = cbSpec.SelectedValue;

            if (sign == null)
            {
                AppFramework.Context.ShowError("请选择规格符号!");
                return;
            }
            foreach (var item in tbSpecs)
            {
                var value       = item.Value.Text;
                var specCompute = OperatorManager.GetOperator(sign.ToString());
                if (!specCompute.Validation(value))
                {
                    AppFramework.Context.ShowError("规格设置格式错误,请检查。");
                    return;
                }
                computeSetting[item.Key] = new ComputeSettingItem()
                {
                    ComputeSign  = sign.ToString(),
                    ComputeValue = value
                };
            }
            vm.Model.ComputeSetting = computeSetting.ToJsonString();
            var testSystem = BaseSettingsManager.Get <SystemGroupSetting>().GetTestSystemItem(vm.Model.SystemID);

            if (testSystem == null)
            {
                AppFramework.Context.ShowError("测试系统不存在!");
                return;
            }
            var errroString = "";

            if (!MeasuringManager.CheckSetting(testSystem.SystemTypeID, vm.Model.TestInfo, out errroString))
            {
                AppFramework.Context.ShowError(errroString);
                return;
            }
            vm.Model.ItemName = MeasuringManager.GetSettingItemName(testSystem.DisplayName, vm.Model.TestInfo, testSystem.PortSetting);

            var validate = vm.Validate();

            if (validate.HasError)
            {
                validate.ShowErrorMessage("保存失败");
                return;
            }
            var specitem = new SpecItem();

            specitem.SpecItemID     = vm.Model.SpecItemID;
            specitem.SeqID          = vm.Model.SeqID;
            specitem.SystemID       = vm.Model.SystemID;
            specitem.ItemName       = vm.Model.ItemName;
            specitem.TestTemp       = vm.Model.TestTemp;
            specitem.TestInfo       = vm.Model.TestInfo;
            specitem.ComputeSetting = vm.Model.ComputeSetting;
            specitem.OrderID        = vm.Model.OrderID;
            AppFramework.Context.ShowAlert("更新成功", "更新项目");
            callback?.Invoke(specitem);
            this.Close();
        }