public string ExtractSelector(CodeceptAction action) { //bool isFound = false; string header = string.Empty; foreach (string head in HeaderString) { if (action.Script.StartsWith(head)) { header = head; break; } } //var split = args.Split(new string[] { "``" }, StringSplitOptions.None); //step# _8.5 action.Script.Split(new string[] { ";I." }, StringSplitOptions.None); string[] split = action.Script.Split(new string[] { ";I." }, StringSplitOptions.None); var target = split[0]; split = target.Split(new string[] { ")." }, StringSplitOptions.None); target = split[0]; if (target.Last() == ')') { target = target.Substring(0, target.Length - 1); } target = target.Replace(header, string.Empty).Trim(); return(target); }
private void toolStripButtonSave_Click(object sender, EventArgs e) { if (System.IO.Path.GetExtension(saveFileDialog1.FileName.ToLower()) == ".xml") { toolStripLabelSaveAs_Click(sender, e); } else { //save var list = MyActions; //actionSource.List; var length = list.Count; List <CodeceptAction> myList = new List <CodeceptAction>(); string codes = string.Empty; for (int i = 0; i < length; i++) { CodeceptAction a = (CodeceptAction)list[i]; //myList.Add(a); if (string.IsNullOrEmpty(a.Script)) { continue; } var code = a.Script.Trim(); while (code.Last() == ';') { code = code.Substring(0, code.Length - 1); } if (code.StartsWith("say('step#")) { codes = codes + string.Format("I.{0};\n", code); } else { codes = codes + string.Format("I.say('step#{0}');I.{1};\n", a.OrderNo.ToString(), code); } } //step# _8.4 config.GetValue("CodeceptTestTemplate"); var codeCeptConfigPath = FileEndPointManager.MyCodeceptTestTemplate; //config.GetValue("CodeceptTestTemplate"); var codeCeptTestTemplate = File.ReadAllText(codeCeptConfigPath); codeCeptTestTemplate = codeCeptTestTemplate.Replace("##steps##", codes); if (File.Exists(saveFileDialog1.FileName)) { File.Delete(saveFileDialog1.FileName); } //step# _8.5 save scenario file File.WriteAllText(saveFileDialog1.FileName, codeCeptTestTemplate); //txtCaption.Text = "Dev Note Console -" + Path.GetFileNameWithoutExtension(saveFileDialog1.FileName); //UpdateStatus(true); } }
// public int inputCount { get; set; } public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.Contains(head)) { isFound = true; break; } } if (isFound) { //inputCount += 1; var expressions = action.Script.Split(new string[] { Keywords.declareVariable }, StringSplitOptions.None); //I.say('DECLARE');var //TIP: we only allow one varible declare per action line OR we only covert the first var if (expressions.Length > 1) { //X='123';I.say('END_DECLARE')";I.fillField({id:'usernamebox'} var expression = expressions[1].Split(';').First(); //x ='123' //x var xName = expression.Split('=').First().Trim(); if (!ListOfVariables.Contains(xName)) { ListOfVariables.Add(xName); } else { //remove declartion //var1='123';I.say('END_DECLARE')";I.fillField({id:'usernamebox'} action.Script = Keywords.useVariable + expressions[1]; } //'123' //var xValue = expression.Split('=').Last().Trim(); } } return(action); }
public override CodeceptAction Modify(CodeceptAction action) { if (string.IsNullOrEmpty(action.Script)) { return(action); } action.Script = action.Script.Replace(";;", ";"); if (action.Script.Last() != ';') { action.Script = action.Script + ";"; } return(action); }
// public int inputCount { get; set; } public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.Contains(head)) { isFound = true; break; } } if (isFound) { //inputCount += 1; foreach (var keyWord in HeaderString) { var expressions = action.Script.Split(new string[] { keyWord }, StringSplitOptions.None); //I.say('DECLARE');var //TIP: we only allow one varible declare per action line OR we only covert the first var if (expressions.Length > 1) { //X='123';I.say('END_DECLARE')";I.fillField({id:'usernamebox'} var expression = expressions[1].Split(';').First(); //x ='123' //x var xName = expression.Split('=').First().Trim(); var xValue = expression.Split('=').Last(); //Parameters[xName] if (Parameters.ContainsKey(xName)) { //do substitution action.Script = action.Script.Replace(xValue, Parameters[xName]); } } } } return(action); }
public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.StartsWith(head)) { isFound = true; break; } } if (isFound) { //var target =ExtractSelector(action); //pressKey('Enter'); var split = action.Script.Split('\''); //wait for use square barcket var keys = split[1]; //fillField({id:'usernamebox'} OriginalString = action.Script; var newScript = OriginalString; var suffix = string.Empty; if (keys.ToUpper().StartsWith("ENTER")) { suffix = string.Format("I.wait({0})", DefaultWait.ToString()); newScript = string.Format("{0};{1}", OriginalString, suffix); } Console.WriteLine(newScript); action.Script = newScript; } return(action); }
public abstract CodeceptAction Modify(CodeceptAction action);
public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.StartsWith(head)) { isFound = true; break; } } if (isFound) { var target = ExtractSelector(action); //waitForElement({id:'usernamebox'},45) //{id:'inputEmail1'}, '*****@*****.**' //var split = target.Split(new string[] { ")." }, StringSplitOptions.None); var split = target.Split(','); var sqr = split[0]; if (sqr.StartsWith("{")) { var sqrContent = sqr.Substring(1, sqr.Length - 2); sqrContent = sqrContent.Replace(":", "="); sqrContent = sqrContent.Replace("'", "\""); sqrContent = "'[" + sqrContent + "]'"; sqr = sqrContent; } var prefix1 = string.Format("waitForElement({0},45)", split[0]); //var prefix1 =string.Format("waitByElement({0})",split[0]); //retry({ retries: 3, maxTimeout: 3000 }).click({id:'usernamebox'} var prefix2 = @"retry({ retries: 3, maxTimeout: 3000 })";//string.Format("retry({ retries: 3, maxTimeout: 3000 })"); //fillField({id:'usernamebox'} OriginalString = action.Script; var newScript = string.Empty; if (IsSemanticLocator(target)) { newScript = string.Format("{0}.see({1});I.{2};I.wait(1);", prefix2, target, OriginalString); } else { newScript = string.Format("{0};I.{1}.{2};I.wait(1)", prefix1, prefix2, OriginalString); } Console.WriteLine(newScript); action.Script = newScript; } return(action); }
// public int inputCount { get; set; } public override CodeceptAction Modify(CodeceptAction action) { throw new NotImplementedException(); }
public void TestRunAsync(CodeceptAction action) { throw new NotImplementedException(); }
public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.StartsWith(head)) { isFound = true; break; } } if (isFound) { inputCount += 1; var target = ExtractSelector(action); //waitForElement({id:'usernamebox'},45) //{id:'inputEmail1'}, '*****@*****.**' //var split = target.Split(new string[] { ")." }, StringSplitOptions.None); var split = target.Split(','); var sqr = split[0]; if (sqr.StartsWith("{")) { var sqrContent = sqr.Substring(1, sqr.Length - 2); sqrContent = sqrContent.Replace(":", "="); sqrContent = sqrContent.Replace("'", "\""); sqrContent = "'[" + sqrContent + "]'"; sqr = sqrContent; } var prefix1 = string.Format("waitForElement({0},45)", sqr); //retry({ retries: 3, maxTimeout: 3000 }).click({id:'usernamebox'} var prefix2 = @"retry({ retries: 3, maxTimeout: 3000 })";//string.Format("retry({ retries: 3, maxTimeout: 3000 })"); //fillField({id:'usernamebox'} OriginalString = action.Script; var newScript = string.Empty; if (IsSemanticLocator(target)) { newScript = string.Format("{0}.see({1});I.{2};I.wait(1);", prefix2, target, OriginalString); } else { newScript = string.Format("{0};I.{1}.{2};I.wait(1)", prefix1, prefix2, OriginalString); } Console.WriteLine(newScript); //add variable prefix here //waitForElement({id:'inputEmail1'},45);I.retry({ retries: 3, maxTimeout: 3000 }) //.fillField //({id:'inputEmail1'}, '*****@*****.**') //; I.wait(1) var splitFillField = newScript.Split(new string[] { ".fillField" }, StringSplitOptions.None); var fillFieldLast = splitFillField.Last(); var splitWait = fillFieldLast.Split(';'); var fillFieldParam = splitWait.First();//({id:'inputEmail1'}, '*****@*****.**') var splitFillFieldParam = fillFieldParam.Split(new string[] { ", '" }, StringSplitOptions.None); if (splitFillFieldParam.Count() == 1) { splitFillFieldParam = fillFieldParam.Split(new string[] { ",'" }, StringSplitOptions.None); } //[email protected]') var inputVal = splitFillFieldParam.Last(); var splitMore = inputVal.Split(new string[] { "'" }, StringSplitOptions.None); //[email protected] inputVal = splitMore.First(); var inputVar = "input_" + inputCount.ToString() + "_"; newScript = newScript.Replace("'" + inputVal + "'", inputVar); //step# 9 DECLARE variable interpreter var variablePrefix = string.Format("{0}{1} = '{2}';I.", Keywords.declareVariable, inputVar, inputVal); newScript = variablePrefix + newScript; action.Script = newScript; } return(action); }
public override CodeceptAction Modify(CodeceptAction action) { //throw new NotImplementedException(); bool isFound = false; foreach (string head in HeaderString) { if (action.Script.StartsWith(head)) { isFound = true; break; } } var JSONObj = new Dictionary <string, string>(); if (isFound) { var target = ExtractSelector(action); //waitForElement({id:'usernamebox'},45) //{id:'inputEmail1'}, '*****@*****.**' //var split = target.Split(new string[] { ")." }, StringSplitOptions.None); var split = target.Split(','); //wait for use square barcket var sqr = split[0]; var prefix1 = string.Empty; if (sqr.StartsWith("'//")) { prefix1 = string.Format("waitByXPath({0},5);I.wait(1)", sqr); } else if (sqr.StartsWith("{xpath:")) { var orig = sqr; sqr = target; //{ xpath: "//*[@id="main - wrap"]/div[2]/div[1]/div[1]/div[2]/div[4]/div"} //sqr = BaiTextFilterClassLibrary.Helper.XpathHandleQuotes(sqr); ==> '{xpath:"//*[@id="main-wrap"]/div[2]/div[1]/div[1]/div[2]/div[4]/div"}' //var JSONObj = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(sqr); try { //JSONObj = JsonConvert.DeserializeObject<Dictionary<string, string>>(sqr); JSONObj = JsonConvert.DeserializeObject <Dictionary <string, string> >(sqr); } catch (Exception) { sqr = sqr.Replace("=\"", "='"); sqr = sqr.Replace("\"]", "']"); JSONObj = JsonConvert.DeserializeObject <Dictionary <string, string> >(sqr); } var xpath = JSONObj["xpath"]; sqr = string.Format("{0}", xpath); sqr = BaiTextFilterClassLibrary.Helper.XpathHandleQuotes(sqr); prefix1 = string.Format("waitByXPath({0},5);I.wait(1)", sqr); #region MAYBE NOT NEEDED ////{"xpath":"(//input[@value=''])[2]"}, 5 //string[] delimeter = new string[] { "])" }; //var split0 = sqr.Split(delimeter, StringSplitOptions.None); ////{"xpath":"(//input[@value=''])[2] //var sqr1 = split0[0]; //delimeter = new string[] { "//" }; //var split1 = sqr1.Split(delimeter, StringSplitOptions.None); //var sqr2 = ""; //if (split1.Length > 1) //{ // //input[@value=''])[2] // sqr2 = split1[1]; // sqr = "//" + sqr2 + "]"; //} //else //{ // //TIP: xpath // //{xpath:"/html/body/div[6]/div[2]/div[1]/div[1]/div[2]/div[4]/div"} // // should transform to ==>> '//html/body/div[6]/div[2]/div[1]/div[1]/div[2]/div[4]/div' // // var JSONObj = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(sqr); // // var xpath = JSONObj["xpath"]; // sqr = string.Format("{0}", xpath); // //I.waitByXPath('//html/body/div[6]/div[2]/div[1]/div[1]/div[2]/div[4]/div',5) //} //sqr = BaiTextFilterClassLibrary.Helper.XpathHandleQuotes(sqr); //prefix1 = string.Format("waitByXPath({0},5);I.wait(1)", sqr); #endregion } else if (sqr.StartsWith("{")) { var sqrContent = sqr.Substring(1, sqr.Length - 2); sqrContent = sqrContent.Replace(":", "="); sqrContent = sqrContent.Replace("'", "\""); sqrContent = "'[" + sqrContent + "]'"; sqr = sqrContent; prefix1 = string.Format("waitByElement({0})", sqr); } else { // var prefix1 =string.Format("waitForElement({0},45)",split[0]); prefix1 = string.Format("waitForElement({0},45)", sqr); } //var prefix1 =string.Format("waitByElement({0})",split[0]); //retry({ retries: 3, maxTimeout: 3000 }).click({id:'usernamebox'} var prefix2 = @"retry({ retries: 3, maxTimeout: 3000 })";//string.Format("retry({ retries: 3, maxTimeout: 3000 })"); //fillField({id:'usernamebox'} OriginalString = action.Script; var newScript = string.Empty; if (IsSemanticLocator(target)) { if (OriginalString.StartsWith("mouseClick(")) //mousceclick(posxy) { newScript = string.Format("{0}", OriginalString); //wait is handle by click codecept } else //click('login'); { //newScript = string.Format("{0}.see({1});I.{2};I.wait({3});", prefix2, target, OriginalString, DefaultWait); newScript = string.Format("{0};I.wait({1});", OriginalString, DefaultWait); } } else { newScript = string.Format("{0};I.{1}.{2};I.wait({3})", prefix1, prefix2, OriginalString, DefaultWait); } Console.WriteLine(newScript); action.Script = newScript; } return(action); }