private bool GetButtonByTag(InputTag tag, int button) { return((bool?)this.GetLogs(tag) ?.FirstOrDefault(it => (int)it.InputValue == button) ?.ReturnValue ?? false); }
private void UpdateInputTagValue(InputTag tag) { switch (tag.FunctionType) { case FunctionType.Sine: tag.SetValue(SimulationDriver.Sine()); break; case FunctionType.Cosine: tag.SetValue(SimulationDriver.Cosine()); break; case FunctionType.Ramp: tag.SetValue(SimulationDriver.Ramp()); break; case FunctionType.Triangle: tag.SetValue(SimulationDriver.Triangle()); break; case FunctionType.Rectangle: tag.SetValue(SimulationDriver.Rectangle()); break; case FunctionType.Digital: tag.SetValue(SimulationDriver.Digital()); break; } PublishTagUpdated(tag); }
public void TestToString() { ParseAndAssertNodeCount(1); Assert.IsTrue(node[0] is InputTag, "Node 1 should be INPUT Tag"); InputTag inputTag = (InputTag)node[0]; Assert.AreEqual("INPUT TAG\n--------\nTYPE : text\nNAME : Google\n", inputTag.ToString(), "HTML Raw String"); }
public void ToHTML() { ParseAndAssertNodeCount(1); Assert.IsTrue(node[0] is InputTag, "Node 1 should be INPUT Tag"); InputTag inputTag = (InputTag)node[0]; Assert.AreEqual("<INPUT TYPE=\"text\" NAME=\"Google\">", inputTag.ToHtml(), "HTML String"); }
/// <summary>Sets up the <see cref="PowerUI.ScrollTabTag.ScrollBar"/> property.</summary> public void GetScrollBar() { if (ScrollBar == null) { // Get the scroll bar: ScrollBar = ((InputTag)(Element.parentNode.Handler)); } }
protected void SelectFromTimePicker(InputTag timepicker, string value) { WaitForLoad(); timepicker.Click(); WaitForLoad(); Keyboard.Press(Keys.Down); WaitForLoad(); Find <LiTag>(string.Format("/div[@Id~'timepicker' and @visible='true']//li[@InnerText='{0}']", value)).Click(); WaitForLoad(); }
private void InputCheckRadio(InputTag submit, StreamWriter file) { var inputMethod = "\npublic void ClickCheckRadio" + submit.Id + "()\n" + "{" + "\n\t _" + submit.Id + ".Click();" + "\n" + "}\n"; file.Write(inputMethod); }
protected void SelectFromCombo(InputTag combo, string value, Boolean onlyVisible = true) { WaitForLoad(); combo.Click(); WaitForLoad(); Keyboard.Press(Keys.Down); WaitForLoad(); //Find<LiTag>(string.Format("/div[@Id~'boundlist' and @visible='true']//li[@InnerText='{0}']", value)).Click(); Find <LiTag>(string.Format("/div[@Id~'boundlist' {1}]//li[@InnerText='{0}']", value, onlyVisible ? "and @visible='true'" : "")).Click(); WaitForLoad(); }
private void InputSubmit(InputTag submit, StreamWriter file) { var inputMethod = "\npublic UnknownObjectPage ClickSubmit" + submit.Id + "()\n" + "{" + "\n\t _" + submit.Id + ".Click();" + "\n\t return new UnknownObjectPage(_driver);" + "\n" + "}\n"; file.Write(inputMethod); }
private void InputText(InputTag text, StreamWriter file) { var inputMethod = "\npublic void PopulateInputField" + text.Id + "(string textToInput)\n" + "{" + "\n\t _" + text.Id + ".Clear();" + "\n\t _" + text.Id + ".SendKeys(textToInput);" + "\n" + "}\n"; file.Write(inputMethod); }
protected bool IsVailCode(string html) { Parser parser = new Parser(new Lexer(html)); NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("input"), new HasAttributeFilter("id", "code_input"))); if (nodeList != null && nodeList.Count > 0) { InputTag input = nodeList[0] as InputTag; return(input.GetAttribute("placeholder") == "请输入验证码"); } return(false); }
public static void AddLog(this IInputLogger logger, InputTag tag, object inputValue, object returnValue) { logger.LogMap .GetOrSet(tag, () => new Dictionary <int, IList <Log> >()) .GetOrSet(logger.GetPassedFrame(), () => new List <Log>()) .Add(new Log { Frame = logger.GetPassedFrame(), InputValue = inputValue, ReturnValue = returnValue }); }
public override bool OnClick(UIEvent clickEvent) { // Get the scroll bar: InputTag scroll = ((InputTag)(Element.parentNode.Handler)); // And scroll it: scroll.ScrollBy(-1); // Prevent bubbling: clickEvent.stopPropagation(); return(true); }
private void PopulateAlarms(InputTag tag) { listViewAlarms.Items.Clear(); foreach (var alarm in tag.Alarms) { var newItem = new ListViewItem(alarm.Id) { Tag = alarm }; newItem.SubItems.Add(alarm.LowLimit.ToString(CultureInfo.CurrentCulture)); newItem.SubItems.Add(alarm.HighLimit.ToString(CultureInfo.CurrentCulture)); listViewAlarms.Items.Add(newItem); } }
/// <summary> /// 得到asp.net页面中的eventValidation值 /// </summary> /// <param name="parser"></param> /// <returns></returns> public static string GetAspNetEventValidation(Parser parser) { string validataion = string.Empty; parser.Reset(); NodeList viewNodes = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("input"), new HasAttributeFilter("name", "__EVENTVALIDATION"))); if (viewNodes != null && viewNodes.Count > 0) { InputTag viewTag = (InputTag)viewNodes[0]; validataion = viewTag.GetAttribute("value"); } return(validataion); }
/// <summary> /// 得到asp.net页面中的viewState值 /// </summary> /// <param name="parser"></param> /// <returns></returns> public static string GetAspNetViewState(Parser parser) { string viewState = string.Empty; parser.Reset(); NodeList viewNodes = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("input"), new HasAttributeFilter("name", "__VIEWSTATE"))); if (viewNodes != null && viewNodes.Count > 0) { InputTag viewTag = (InputTag)viewNodes[0]; viewState = viewTag.GetAttribute("value"); } return(viewState); }
/// <summary> /// Select Combo Box on Web page /// </summary> /// <param name="combobox">Element xpath</param> /// <param name="Option">Value to Select</param> /// <param name="ControlName">logical name of control name</param> public static void selectComboBoxOptionforWeb(InputTag combobox, string Option, string ControlName) { for (;;) { combobox.Focus(); combobox.Value = ""; combobox.PressKeys(Option); Delay.Seconds(2); Keyboard.Press("{TAB}"); if (combobox.TagValue.Equals(Option)) { break; } } }
/// <summary> /// Funkcja aktywuje kontrolkę datepicker'a, a następnie wybiera wskazaną datę /// </summary> /// <param name="id">identyfikator pola typu input kontrolki kalendarza</param> /// <param name="date">data którą chcemy wybrać</param> protected void WybierzZDatePicera(InputTag inputTag, string date, int firstYear = 2011, int lastYear = 2020) { DebugLog("Wybieram date : " + date); // Sprawdz jakiego rodzaju kontrolka kalenarza // Jeśli pole Input (id) nie aktywuje kontrolki kalendarza // trzeba ją znaleźć if (!inputTag.Class.Contains("x-trigger-noedit")) { var trTag = inputTag.Parent.Parent; var divTag = trTag.FindSingle <DivTag>(".//td[2]/div"); divTag.Click(); } else { inputTag.Click(); } string[] months = { "Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru" }; string[] parseDate = date.Split('.'); // Odszukaj id kontrolki datepicker-* var idDatePicker = Find <DivTag>("body/div[@id~'datepicker-' and @Visible='True']").Id; // kliknij w selektor miesiąca Find <SpanTag>(string.Format("/div[#'{0}']//span[@id~'splitbutton-*' and Visible='True']", idDatePicker)).Click(); System.Threading.Thread.Sleep(1000); // K.O - żeby się nie pogubił // wybierz rok // Uwaga, na liście lat kontrolki domyślnie są lata 2011-2020 ShiftListYears(idDatePicker, parseDate[2], firstYear, lastYear); Find <ATag>(string.Format("/div[#'{0}']//div[@Id~'yearEl' and Visible='True']//a[@innertext='{1}']", idDatePicker, parseDate[2])).Click(); // wybierz miesiąc Find <ATag>(string.Format("/div[#'{0}']//a[@innertext='{1}']", idDatePicker, months[int.Parse(parseDate[1]) - 1])).Click(); // kliknij guzik OK Find <SpanTag>(string.Format("/div[#'{0}']//span[@InnerText ~'OK']", idDatePicker)).Click(); System.Threading.Thread.Sleep(2000); // K.O - żeby się nie pogubił // wybierz dzien Find <ATag>(string.Format("/div[#'{0}']//table[Id~'datepicker']//td[@class~'-active' and Visible='True']/a[@innertext='{1}']", idDatePicker, int.Parse(parseDate[0]).ToString())).Click(); WaitForLoad(); }
public void ToHTML2() { string testHTML = "<INPUT type=\"checkbox\" " + "name=\"cbCheck\" checked>"; CreateParser(testHTML); parser.AddScanner(new InputTagScanner("-i")); ParseAndAssertNodeCount(1); Assert.IsTrue(node[0] is InputTag, "Node 1 should be INPUT Tag"); InputTag inputTag = (InputTag)node[0]; AssertHelper.FoundExpectedTagAndAttributes(inputTag.ToHtml(), "INPUT", "TYPE=\"checkbox\"", "CHECKED=\"\"", "NAME=\"cbCheck\""); }
private static void CheckInputTagAlarms(InputTag tag) { foreach (var alarm in tag.Alarms) { var value = tag.GetValue(); if (value <= alarm.LowLimit) { OnAlarmTriggered( $"{DateTime.Now}: {tag.Id} value {value:0.###} is lower than {alarm.Id} low limit of {alarm.LowLimit}!"); } else if (value >= alarm.HighLimit) { OnAlarmTriggered( $"{DateTime.Now}: {tag.Id} value {value:0.###} is higher than {alarm.Id} high limit of {alarm.HighLimit}!"); } } }
/// <summary> /// Funkcja aktywuje kontrolkę vtimepicker'a, a następnie wybiera wskazaną datę /// Uwaga! brak wartości parametru czas, spowoduje wybór guzika "TERAZ" /// </summary> /// <param name="id">identyfikator pola typu input kontrolki zegara</param> /// <param name="czas">data którą chcemy wybrać w formacie [hh:mm]</param> protected void WybierzZVtimepicker(InputTag inputTag, string czas = "") { DebugLog(string.Format("Wybieram wskazany czas [hh:mm] : {0}", (czas == string.Empty ? "TERAZ" : czas))); var minuty = ""; var godziny = ""; if (!string.IsNullOrEmpty(czas)) { int min = 0; int godz = 0; var godzinyMinuty = czas.Split(':'); if (int.TryParse(godzinyMinuty[0], out godz) == false || godz > 24) { DebugLog(string.Format("Podano niepoprawną wartość dla godzin: <{0}>", godzinyMinuty[0])); return; } if (int.TryParse(godzinyMinuty[1], out min) == false || min > 59) { DebugLog(string.Format("Podano niepoprawną wartość dla minut: <{0}>", godzinyMinuty[1])); return; } // Minuty modulo 5! minuty = (min > 5 ? min - (min % 5) : (min % 5)).ToString().PadLeft(2, '0'); godziny = godz.ToString().PadLeft(2, '0'); } // Sprawdz jakiego rodzaju kontrolka kalenarza // Jeśli pole Input (id) nie aktywuje kontrolki kalendarza // trzeba ją znaleźć if (!inputTag.Class.Contains("x-trigger-noedit")) { var trTag = inputTag.Parent.Parent; var divTag = trTag.FindSingle <DivTag>(".//td[2]/div"); divTag.Click(); } else { inputTag.Click(); } // Odszukaj id kontrolki vtimepicker-* var idTimePicker = Find <DivTag>("body/div[@id~'vtimepicker-' and @Visible='True']").Id; System.Threading.Thread.Sleep(1000); // K.O - żeby się nie pogubił if (!string.IsNullOrEmpty(czas)) { // wybierz godzinę Find <ATag>(string.Format("/div[#'{0}']//td[@class~'hours']/a[@innertext='{1}']", idTimePicker, godziny)).Click(); // wybierz minutę - kończy działanie kontrolki Find <ATag>(string.Format("/div[#'{0}']//td[@class~'minutes']/a[@innertext='{1}']", idTimePicker, minuty)).Click(); // kliknij guzik OK //Find<SpanTag>(string.Format("/div[#'{0}']//span[@InnerText ~'OK']", idTimePicker)).Click(); } else { // kliknij guzik TERAZ Find <SpanTag>(string.Format("/div[#'{0}']//span[@InnerText ~'TERAZ']", idTimePicker)).Click(); } System.Threading.Thread.Sleep(2000); // K.O - żeby się nie pogubił WaitForLoad(); }
/// <summary>Sets up the <see cref="PowerUI.ScrollTabTag.ScrollBar"/> property.</summary> public void GetScrollBar(){ if(ScrollBar==null){ // Get the scroll bar: ScrollBar=((InputTag)(Element.parentNode.Handler)); } }
/// <summary> /// Recursively evaluates the template nodes returned from the bot /// </summary> /// <param name="node">the node to evaluate</param> /// <param name="request">the request from the user</param> /// <param name="result">the result to be sent to the user</param> /// <param name="user">the user who originated the request</param> /// <returns>the output string</returns> private string ProcessNode(XmlNode node, Request request, Result result, User user) { StringBuilder newInnerText = new StringBuilder(); if (node.HasChildNodes) { // recursively check foreach (XmlNode childNode in node.ChildNodes) { childNode.InnerText = this.ProcessNode(childNode, request, result, user); } } // process the node itself AIMLTagHandler tagHandler = null; switch (node.Name.ToLower()) { case "bot": tagHandler = new BotTag(this, user, request, result, node); break; case "condition": tagHandler = new ConditionTag(this, user, request, result, node); break; case "date": tagHandler = new DateTag(this, user, request, result, node); break; case "formal": tagHandler = new FormalTag(this, user, request, result, node); break; case "gender": tagHandler = new GenderTag(this, user, request, result, node); break; case "get": tagHandler = new GetTag(this, user, request, result, node); break; case "gossip": tagHandler = new GossipTag(this, user, request, result, node); break; case "id": tagHandler = new IdTag(this, user, request, result, node); break; case "input": tagHandler = new InputTag(this, user, request, result, node); break; case "javascript": tagHandler = new JavascriptTag(this, user, request, result, node); break; case "learn": tagHandler = new LearnTag(this, user, request, result, node); break; case "lowercase": tagHandler = new LowercaseTag(this, user, request, result, node); break; case "person": tagHandler = new PersonTag(this, user, request, result, node); break; case "person2": tagHandler = new Person2Tag(this, user, request, result, node); break; case "random": tagHandler = new RandomTag(this, user, request, result, node); break; case "sentence": tagHandler = new SentenceTag(this, user, request, result, node); break; case "set": tagHandler = new SetTag(this, user, request, result, node); break; case "size": tagHandler = new SizeTag(this, user, request, result, node); break; case "sr": tagHandler = new SrTag(this, user, request, result, node); break; case "srai": tagHandler = new SraiTag(this, user, request, result, node); break; case "star": tagHandler = new StarTag(this, user, request, result, node); break; case "system": tagHandler = new SystemTag(this, user, request, result, node); break; case "that": tagHandler = new ThatTag(this, user, request, result, node); break; case "thatstar": tagHandler = new ThatStarTag(this, user, request, result, node); break; case "think": tagHandler = new ThinkTag(this, user, request, result, node); break; case "topicstar": tagHandler = new TopicStarTag(this, user, request, result, node); break; case "uppercase": tagHandler = new UppercaseTag(this, user, request, result, node); break; case "version": tagHandler = new VersionTag(this, user, request, result, node); break; default: tagHandler = this.GetBespokeTags(user, request, result, node); break; } if (object.Equals(null, tagHandler)) { return(node.InnerText); } else { return(tagHandler.Transform()); } }
protected override IList ExecuteCrawl(bool crawlAll) { IList list = new List <InviteInfo>(); int pageInt = 1; string html = string.Empty; string viewState = string.Empty; string cookiestr = string.Empty; string eventValidation = string.Empty; try { html = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8); } catch (Exception ex) { return(list); } Parser parser = new Parser(new Lexer(html)); NodeList tdNodes = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class", "input-group-addon"))); if (tdNodes != null && tdNodes.Count > 0) { try { string reTemp = tdNodes.AsString().GetRegexBegEnd("共", "项"); string pageTemp = tdNodes.AsString().GetRegexBegEnd("项", "页").GetReplace("共,项,页," + reTemp + ",,"); pageInt = int.Parse(pageTemp); } catch (Exception) { } } for (int i = 1; i <= pageInt; i++) { if (i > 1) { try { html = this.ToolWebSite.GetHtmlByUrl(SiteUrl + "?pi=" + (i - 1), Encoding.UTF8); } catch { continue; } } parser = new Parser(new Lexer(html)); NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("class", "inside_table"))); if (nodeList != null && nodeList.Count > 0) { TableTag table = (TableTag)nodeList[0]; for (int j = 1; j < table.RowCount; j++) { string code = string.Empty, buildUnit = string.Empty, prjName = string.Empty, prjAddress = string.Empty, inviteCtx = string.Empty, bidType = string.Empty, specType = string.Empty, beginDate = string.Empty, endDate = string.Empty, remark = string.Empty, inviteCon = string.Empty, InfoUrl = string.Empty, CreateTime = string.Empty, msgType = string.Empty, otherType = string.Empty, HtmlTxt = string.Empty; TableRow tr = table.Rows[j]; prjName = tr.Columns[1].ToPlainTextString().Trim(); buildUnit = tr.Columns[2].ToPlainTextString().Trim(); beginDate = tr.Columns[3].ToPlainTextString().Trim(); InfoUrl = "http://www.bajsjy.com/" + tr.Columns[1].GetATagHref(); string htmldetail = string.Empty; try { htmldetail = this.ToolWebSite.GetHtmlByUrl(InfoUrl, Encoding.UTF8).Replace("<th", "<td").Replace("</th>", "</td>").Replace(" ", ""); } catch (Exception) { continue; } Parser parserdetail = new Parser(new Lexer(htmldetail)); NodeList nodeDetailList = parserdetail.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("class", "inside_table"))); if (nodeDetailList != null && nodeDetailList.Count > 0) { HtmlTxt = nodeDetailList.AsHtml(); TableTag tabledetail = (TableTag)nodeDetailList[0]; for (int r = 0; r < tabledetail.RowCount; r++) { TableRow trdetail = tabledetail.Rows[r]; for (int c = 0; c < trdetail.ColumnCount; c++) { string tr1 = string.Empty; string tr2 = string.Empty; NodeList inptList; NodeList selList; if (trdetail.ColumnCount <= 1) { continue; } tr1 = trdetail.Columns[c].ToPlainTextString().Trim(); tr2 = trdetail.Columns[c + 1].ToPlainTextString().Trim(); inptList = trdetail.Columns[c + 1].SearchFor(typeof(InputTag), true); selList = trdetail.Columns[c + 1].SearchFor(typeof(SelectTag), true); if (inptList != null && inptList.Count > 0) { if (inptList.Count > 1) { for (int inp = 0; inp < inptList.Count; inp++) { InputTag inputTage = (InputTag)inptList[inp]; if (inputTage.GetAttribute("checked") == "checked") { tr2 = inputTage.GetAttribute("value"); } } } else { InputTag inputTage = (InputTag)inptList[0]; tr2 = inputTage.GetAttribute("value"); } } if (selList != null && selList.Count > 0) { SelectTag selTag = (SelectTag)selList[0]; NodeList opList = new NodeList(); selTag.CollectInto(opList, new HasAttributeFilter("selected", "selected")); tr2 = opList.AsString(); } inviteCtx += tr1 + ":" + tr2 + "\r\n"; if (trdetail.ColumnCount > (c + 1)) { c = c + 1; } } } Regex regPrjAddr = new Regex(@"工程地址:[^\r\n]+\r\n"); prjAddress = regPrjAddr.Match(inviteCtx).Value.Replace("工程地址:", "").Trim(); Regex regoType = new Regex(@"工程类型:[^\r\n]+\r\n"); string oType = regoType.Match(inviteCtx).Value.Replace("工程类型:", "").Trim(); if (oType.Contains("房建")) { otherType = "房建及工业民用建筑"; } else if (oType.Contains("市政")) { otherType = "市政工程"; } else if (oType.Contains("园林绿化")) { otherType = "园林绿化工程"; } else if (oType.Contains("装饰") || oType.Contains("装修")) { otherType = "装饰装修工程"; } else if (oType.Contains("电力")) { otherType = "电力工程"; } else if (oType.Contains("水利")) { otherType = "水利工程"; } if (oType.Contains("环保")) { otherType = "环保工程"; } msgType = "深圳市建设工程交易中心宝安分中心"; specType = "建设工程"; bidType = ToolHtml.GetInviteTypes(prjName); InviteInfo info = ToolDb.GenInviteInfo("广东省", "深圳宝安区工程", "宝安区", string.Empty, code, prjName, prjAddress, buildUnit, beginDate, endDate, inviteCtx, remark, msgType, bidType, specType, otherType, InfoUrl, HtmlTxt); list.Add(info); if (!crawlAll && list.Count >= this.MaxCount) { return(list); } } } } } return(list); }
protected List <QualInfo> GetQual() { List <QualInfo> quals = ToolFile.Deserialize <QualInfo>(ToolFile.WebQualPath); if (quals == null || quals.Count < 1) { quals = new List <QualInfo>(); int pageInt = 1; int totalPage = 0; string url = "http://jzsc.mohurd.gov.cn/asite/qualapt/aptData?apt_type="; string html = string.Empty; try { html = ToolWeb.GetHtmlByUrl(url); } catch { } Parser parser = new Parser(new Lexer(html)); NodeList pageNode = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("class", "clearfix"))); if (pageNode != null && pageNode.Count > 0) { try { string temp = pageNode.AsString().Replace(",", ","); string page = temp.GetRegexBegEnd("total", ",").GetReplace("\":"); totalPage = int.Parse(page); pageInt = totalPage / 10 + 1; } catch { } } for (int i = 1; i <= pageInt; i++) { if (i > 1) { NameValueCollection nvc = ToolWeb.GetNameValueCollection(new string[] { "$total", "$reload", "$pg", "$pgsz" }, new string[] { totalPage.ToString(), "0", i.ToString(), "10" }); try { html = ToolWeb.GetHtmlByUrl(url, nvc, Encoding.UTF8); } catch { } } parser = new Parser(new Lexer(html)); NodeList listNode = parser.ExtractAllNodesThatMatch(new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("class", "table_box"))); if (listNode != null && listNode.Count > 0) { TableTag table = listNode[0] as TableTag; for (int j = 0; j < table.RowCount - 1; j++) { TableRow tr = table.Rows[j]; parser = new Parser(new Lexer(tr.ToHtml())); try { NodeList input = parser.ExtractAllNodesThatMatch(new TagNameFilter("input")); InputTag tag = input[0] as InputTag; string json = tag.GetAttribute("value"); JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <string, object> smsTypeJson = (Dictionary <string, object>)serializer.DeserializeObject(json); QualInfo info = new QualInfo(); info.QualCode = Convert.ToString(smsTypeJson["apt_code"]); info.QualName = Convert.ToString(smsTypeJson["apt_scope"]); quals.Add(info); } catch (Exception ex) { Logger.Error(i); Logger.Error(tr.ToHtml()); } } } Thread.Sleep(1000 * 1); } quals = quals.OrderBy(x => x.QualCode).ToList(); ToolFile.Serialize <QualInfo>(quals, ToolFile.WebQualPath); } return(quals); }
private IEnumerable <Log> GetLogs(InputTag tag) { return(this.Logger.LogMap.GetOrDefault(tag)?.GetOrDefault(this.PassedFrame)); }
public static IEnumerable <Log> GetLogs(this IInputReplayer replayer, InputTag tag) { return(replayer.Logger.LogMap.GetOrDefault(tag)?.GetOrDefault(replayer.GetPassedFrame())); }