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; })); }
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, "保存失败")); } }
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); }
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); }
public async Task <int> SaveSpecItem(SpecItem modelVM) { try { return(await StdRepo.ExcuteStoredProcedureToSave <SpecItem>(GlobalSPNames.SaveSpecItemSPName, modelVM)); } catch (Exception ex) { throw ex; } }
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); }
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); }
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); }
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)); } }
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); }
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); }
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); }
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); }
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(); }