1
14
15 package com.liferay.portal.tools;
16
17 import com.liferay.portal.kernel.util.CharPool;
18 import com.liferay.portal.kernel.util.FileUtil;
19 import com.liferay.portal.kernel.util.SetUtil;
20 import com.liferay.portal.kernel.util.StringBundler;
21 import com.liferay.portal.kernel.util.StringPool;
22 import com.liferay.portal.kernel.util.StringUtil;
23 import com.liferay.portal.kernel.util.UnicodeFormatter;
24 import com.liferay.portal.tools.servicebuilder.ServiceBuilder;
25 import com.liferay.portal.util.InitUtil;
26
27 import java.io.File;
28
29 import java.util.HashMap;
30 import java.util.Map;
31 import java.util.Set;
32
33 import org.apache.tools.ant.DirectoryScanner;
34
35
40 public class SeleneseToJavaBuilder {
41
42 public static void main(String[] args) throws Exception {
43 InitUtil.initWithSpring();
44
45 if (args.length == 1) {
46 new SeleneseToJavaBuilder(args[0]);
47 }
48 else {
49 throw new IllegalArgumentException();
50 }
51 }
52
53 public SeleneseToJavaBuilder(String basedir) throws Exception {
54 DirectoryScanner ds = new DirectoryScanner();
55
56 ds.setBasedir(basedir);
57 ds.setExcludes(
58 new String[] {
59 "**\\IterateThemeTest.java", "**\\StopSeleniumTest.java"
60 });
61 ds.setIncludes(new String[] {"**\\*Test.html", "**\\*Test.java"});
62
67
68 ds.scan();
69
70 Set<String> fileNames = SetUtil.fromArray(ds.getIncludedFiles());
71
72 for (String fileName : fileNames) {
73
74
78
86
87 if (fileName.endsWith("Test.html")) {
88 translate(basedir, fileName);
89 }
90 else if (fileName.endsWith("Test.java")) {
91 if (!fileNames.contains(
92 fileName.substring(0, fileName.length() - 5) +
93 ".html")) {
94
95 System.out.println("unused: " + fileName);
96 }
97 }
98 }
99 }
100
101 protected String fixParam(String param) {
102 StringBuilder sb = new StringBuilder();
103
104 char[] array = param.toCharArray();
105
106 for (int i = 0; i < array.length; ++i) {
107 char c = array[i];
108
109 if (c == CharPool.BACK_SLASH) {
110 sb.append("\\\\");
111 }
112 else if (c == CharPool.QUOTE) {
113 sb.append("\\\"");
114 }
115 else if (Character.isWhitespace(c)) {
116 sb.append(c);
117 }
118 else if ((c < 0x0020) || (c > 0x007e)) {
119 sb.append("\\u");
120 sb.append(UnicodeFormatter.charToHex(c));
121 }
122 else {
123 sb.append(c);
124 }
125 }
126
127 return StringUtil.replace(
128 sb.toString(), _FIX_PARAM_OLD_SUBS, _FIX_PARAM_NEW_SUBS);
129 }
130
131 protected String[] getParams(String step) throws Exception {
132 String[] params = new String[3];
133
134 int x = 0;
135 int y = 0;
136
137 for (int i = 0; i < 3; i++) {
138 x = step.indexOf("<td>", x) + 4;
139 y = step.indexOf("\n", x);
140 y = step.lastIndexOf("</td>", y);
141
142 params[i] = step.substring(x, y);
143 }
144
145 return params;
146 }
147
148 protected void translate(String basedir, String fileName) throws Exception {
149 fileName = StringUtil.replace(
150 fileName, StringPool.BACK_SLASH, StringPool.SLASH);
151
152 int x = fileName.lastIndexOf(StringPool.SLASH);
153 int y = fileName.indexOf(CharPool.PERIOD);
154
155 String testPackagePath = StringUtil.replace(
156 fileName.substring(0, x), StringPool.SLASH, StringPool.PERIOD);
157 String testName = fileName.substring(x + 1, y);
158 String testMethodName =
159 "test" + testName.substring(0, testName.length() - 4);
160 String testFileName =
161 basedir + "/" + fileName.substring(0, y) + ".java";
162
163 StringBundler sb = new StringBundler();
164
165 sb.append("package ");
166 sb.append(testPackagePath);
167 sb.append(";\n\n");
168
169 sb.append("import com.liferay.portal.kernel.util.FileUtil;\n");
170 sb.append("import com.liferay.portal.kernel.util.StringPool;\n");
171 sb.append("import com.liferay.portalweb.portal.BaseTestCase;\n\n");
172 sb.append(
173 "import com.liferay.portalweb.portal.util.RuntimeVariables;\n\n");
174
175 sb.append("public class ");
176 sb.append(testName);
177 sb.append(" extends BaseTestCase {");
178
179 sb.append("public void ");
180 sb.append(testMethodName);
181 sb.append("() throws Exception {");
182
183 String xml = FileUtil.read(basedir + "/" + fileName);
184
185 if ((xml.indexOf("<title>" + testName + "</title>") == -1) ||
186 (xml.indexOf("colspan=\"3\">" + testName + "</td>") == -1)) {
187
188 System.out.println(testName + " has an invalid test name");
189 }
190
191 if (xml.indexOf(">") != -1) {
192 xml = StringUtil.replace(xml, ">", ">");
193
194 FileUtil.write(basedir + "/" + fileName, xml);
195 }
196
197 if (xml.indexOf("<") != -1) {
198 xml = StringUtil.replace(xml, "<", "<");
199
200 FileUtil.write(basedir + "/" + fileName, xml);
201 }
202
203 if (xml.indexOf(""") != -1) {
204 xml = StringUtil.replace(xml, """, "\"");
205
206 FileUtil.write(basedir + "/" + fileName, xml);
207 }
208
209 x = xml.indexOf("<tbody>");
210 y = xml.indexOf("</tbody>");
211
212 xml = xml.substring(x, y + 8);
213
214 Map<String, String> labels = new HashMap<String, String>();
215
216 int labelCount = 1;
217
218 Map<Integer, Boolean> takeScreenShots = new HashMap<Integer, Boolean>();
219
220 x = 0;
221 y = 0;
222
223 while (true) {
224 x = xml.indexOf("<tr>", x);
225 y = xml.indexOf("\n</tr>", x);
226
227 if ((x == -1) || (y == -1)) {
228 break;
229 }
230
231 x += 6;
232 y++;
233
234 String step = xml.substring(x, y);
235
236 String[] params = getParams(step);
237
238 String param1 = params[0];
239 String param2 = fixParam(params[1]);
240
241 if (param1.equals("assertConfirmation")) {
242 int previousX = x - 6;
243
244 previousX = xml.lastIndexOf("<tr>", previousX - 1);
245 previousX += 6;
246
247 takeScreenShots.put(previousX, Boolean.FALSE);
248 }
249 else if (param1.equals("label")) {
250 String label = labels.get(param2);
251
252 if (label == null) {
253 labelCount++;
254
255 label = labels.put(param2, String.valueOf(labelCount));
256 }
257 }
258 }
259
260 if (labels.size() > 0) {
261 sb.append("int label = 1;");
262
263 sb.append("while (label >= 1) {");
264 sb.append("switch (label) {");
265 sb.append("case 1:");
266 }
267
268 x = 0;
269 y = 0;
270
271 while (true) {
272 x = xml.indexOf("<tr>", x);
273 y = xml.indexOf("\n</tr>", x);
274
275 if ((x == -1) || (y == -1)) {
276 break;
277 }
278
279 x += 6;
280 y++;
281
282 String step = xml.substring(x, y);
283
284 String[] params = getParams(step);
285
286 String param1 = params[0];
287 String param2 = fixParam(params[1]);
288 String param3 = fixParam(params[2]);
289
290 if (param1.equals("addSelection") || param1.equals("clickAt") ||
291 param1.equals("keyPress") || param1.equals("openWindow") ||
292 param1.equals("select") || param1.equals("type") ||
293 param1.equals("typeKeys") || param1.equals("waitForPopUp")) {
294
295 sb.append("selenium.");
296 sb.append(param1);
297 sb.append("(");
298
299 if (param2.startsWith("${")) {
300 sb.append("RuntimeVariables.getValue(\"");
301
302 String text = param2.substring(2, param2.length() - 1);
303
304 sb.append(text);
305 sb.append("\")");
306 }
307 else {
308 sb.append("\"");
309 sb.append(param2);
310 sb.append("\"");
311 }
312
313 sb.append(", RuntimeVariables.replace(");
314
315 if (param3.startsWith("${")) {
316 sb.append("RuntimeVariables.getValue(\"");
317
318 String text = param3.substring(2, param3.length() - 1);
319
320 sb.append(text);
321 sb.append("\")");
322 }
323 else {
324 sb.append("\"");
325 sb.append(param3);
326 sb.append("\"");
327 }
328
329 sb.append("));");
330 }
331 else if (param1.equals("assertAlert") ||
332 param1.equals("assertNotAlert")) {
333
334 if (param1.equals("assertAlert")) {
335 sb.append("assertEquals");
336 }
337 else if (param1.equals("assertNotAlert")) {
338 sb.append("assertNotEquals");
339 }
340
341 sb.append("(\"");
342 sb.append(param2);
343 sb.append("\", selenium.getAlert());");
344 }
345 else if (param1.equals("assertChecked") ||
346 param1.equals("assertNotChecked")) {
347
348 if (param1.equals("assertChecked")) {
349 sb.append("assertTrue");
350 }
351 else if (param1.equals("assertNotChecked")) {
352 sb.append("assertFalse");
353 }
354
355 sb.append("(selenium.isChecked(\"");
356 sb.append(param2);
357 sb.append("\"));");
358 }
359 else if (param1.equals("assertConfirmation")) {
360 param2 = StringUtil.replace(param2, "?", "[\\\\s\\\\S]");
361
362 sb.append("assertTrue(selenium.getConfirmation().matches(\"^");
363 sb.append(param2);
364 sb.append("$\"));");
365 }
366 else if (param1.equals("assertLocation") ||
367 param1.equals("assertNotLocation")) {
368
369 if (param1.equals("assertLocation")) {
370 sb.append("assertEquals");
371 }
372 else if (param1.equals("assertNotLocation")) {
373 sb.append("assertNotEquals");
374 }
375
376 sb.append("(\"");
377 sb.append(param2);
378 sb.append("\", selenium.getLocation());");
379 }
380 else if (param1.equals("assertElementNotPresent") ||
381 param1.equals("assertElementPresent")) {
382
383 if (param1.equals("assertElementNotPresent")) {
384 sb.append("assertFalse");
385 }
386 else if (param1.equals("assertElementPresent")) {
387 sb.append("assertTrue");
388 }
389
390 sb.append("(selenium.isElementPresent(\"");
391 sb.append(param2);
392 sb.append("\"));");
393 }
394 else if (param1.equals("assertNotPartialText") ||
395 param1.equals("assertPartialText")) {
396
397 if (param1.equals("assertNotPartialText")) {
398 sb.append("assertFalse");
399 }
400 else if (param1.equals("assertPartialText")) {
401 sb.append("assertTrue");
402 }
403
404 sb.append("(selenium.isPartialText(\"");
405 sb.append(param2);
406 sb.append("\", ");
407
408 if (param3.startsWith("${")) {
409 sb.append("RuntimeVariables.getValue(\"");
410
411 String text = param3.substring(2, param3.length() - 1);
412
413 sb.append(text);
414 sb.append("\")");
415 }
416 else {
417 sb.append("\"");
418 sb.append(param3);
419 sb.append("\"");
420 }
421
422 sb.append("));");
423 }
424 else if (param1.equals("assertNotSelectedLabel") ||
425 param1.equals("assertSelectedLabel")) {
426
427 if (param1.equals("assertNotSelectedLabel")) {
428 sb.append("assertNotEquals");
429 }
430 else if (param1.equals("assertSelectedLabel")) {
431 sb.append("assertEquals");
432 }
433
434 sb.append("(");
435
436 if (param3.startsWith("${")) {
437 sb.append("RuntimeVariables.getValue(\"");
438
439 String text = param3.substring(2, param3.length() - 1);
440
441 sb.append(text);
442 sb.append("\")");
443 }
444 else {
445 sb.append("\"");
446 sb.append(param3);
447 sb.append("\"");
448 }
449
450 sb.append(", selenium.getSelectedLabel(\"");
451 sb.append(param2);
452 sb.append("\"));");
453 }
454 else if (param1.equals("assertNotSelectedLabels") ||
455 param1.equals("assertSelectedLabels")) {
456
457 if (param1.equals("assertNotSelectedLabels")) {
458 sb.append("assertNotEquals");
459 }
460 else if (param1.equals("assertSelectedLabels")) {
461 sb.append("assertEquals");
462 }
463
464 sb.append("(\"");
465 sb.append(param3);
466 sb.append("\", join(selenium.getSelectedLabels(\"");
467 sb.append(param2);
468 sb.append("\"), \',\'));");
469 }
470 else if (param1.equals("assertNotText") ||
471 param1.equals("assertText")) {
472
473 if (param1.equals("assertNotText")) {
474 sb.append("assertNotEquals");
475 }
476 else if (param1.equals("assertText")) {
477 sb.append("assertEquals");
478 }
479
480 sb.append("(RuntimeVariables.replace(\"");
481 sb.append(param3);
482 sb.append("\"), selenium.getText(\"");
483 sb.append(param2);
484 sb.append("\"));");
485 }
486 else if (param1.equals("assertNotValue") ||
487 param1.equals("assertValue")) {
488
489 if (param1.equals("assertNotValue")) {
490 sb.append("assertNotEquals");
491 }
492 else if (param1.equals("assertValue")) {
493 sb.append("assertEquals");
494 }
495
496 sb.append("(\"");
497 sb.append(param3);
498 sb.append("\", selenium.getValue(\"");
499 sb.append(param2);
500 sb.append("\"));");
501 }
502 else if (param1.equals("assertNotVisible") ||
503 param1.equals("assertVisible")) {
504
505 if (param1.equals("assertNotVisible")) {
506 sb.append("assertFalse");
507 }
508 else if (param1.equals("assertVisible")) {
509 sb.append("assertTrue");
510 }
511
512 sb.append("(");
513 sb.append("selenium.isVisible(\"");
514 sb.append(param2);
515 sb.append("\"));");
516 }
517 else if (param1.equals("assertSelectOptions")) {
518 String[] expectedArray = StringUtil.split(param3);
519
520 sb.append("String[] actualArray = ");
521 sb.append("selenium.getSelectOptions(\"");
522 sb.append(param2);
523 sb.append("\");");
524
525 sb.append("assertEquals(");
526 sb.append(expectedArray.length);
527 sb.append(", actualArray.length);");
528
529 for (int i = 0; i < expectedArray.length; i++) {
530 sb.append("assertEquals(\"");
531 sb.append(expectedArray[i]);
532 sb.append("\", actualArray[");
533 sb.append(i);
534 sb.append("]);");
535 }
536 }
537 else if (param1.equals("assertTextNotPresent") ||
538 param1.equals("assertTextPresent")) {
539
540 if (param1.equals("assertTextNotPresent")) {
541 sb.append("assertFalse");
542 }
543 else if (param1.equals("assertTextPresent")) {
544 sb.append("assertTrue");
545 }
546
547 sb.append("(selenium.isTextPresent(\"");
548 sb.append(param2);
549 sb.append("\"));");
550 }
551 else if (param1.equals("captureEntirePageScreenshot")) {
552 int pos = param2.lastIndexOf("\\");
553
554 String dirName = param2.substring(0, pos + 1);
555
556 sb.append("FileUtil.mkdirs(RuntimeVariables.replace(\"");
557 sb.append(dirName);
558 sb.append("\"));");
559 sb.append("selenium.captureEntirePageScreenshot(");
560 sb.append("RuntimeVariables.replace(\"");
561 sb.append(param2);
562 sb.append("\"), \"\");");
563 }
564 else if (param1.equals("check") || param1.equals("click") ||
565 param1.equals("doubleClick") ||
566 param1.equals("mouseDown") || param1.equals("mouseOver") ||
567 param1.equals("mouseUp") || param1.equals("open") ||
568 param1.equals("selectFrame") ||
569 param1.equals("selectPopUp") ||
570 param1.equals("selectWindow") ||
571 param1.equals("setTimeout") || param1.equals("uncheck")) {
572
573 sb.append("selenium.");
574 sb.append(param1);
575 sb.append("(\"");
576 sb.append(param2);
577 sb.append("\");");
578 }
579 else if (param1.equals("clickAndWait")) {
580 sb.append("selenium.click(RuntimeVariables.replace(\"");
581 sb.append(param2);
582 sb.append("\"));");
583 sb.append("selenium.waitForPageToLoad(\"30000\");");
584 }
585 else if (param1.equals("clickAtAndWait") ||
586 param1.equals("keyPressAndWait") ||
587 param1.equals("selectAndWait")) {
588
589 sb.append("selenium.");
590
591 String text = param1.substring(0, param1.length() - 7);
592
593 sb.append(text);
594 sb.append("(\"");
595 sb.append(param2);
596 sb.append("\", RuntimeVariables.replace(\"");
597 sb.append(param3);
598 sb.append("\"));");
599 sb.append("selenium.waitForPageToLoad(\"30000\");");
600 }
601 else if (param1.equals("close") || param1.equals("refresh") ||
602 param1.equals("windowFocus") ||
603 param1.equals("windowMaximize")) {
604
605 sb.append("selenium.");
606 sb.append(param1);
607 sb.append("();");
608 }
609 else if (param1.equals("dragAndDropToObject")) {
610 sb.append("selenium.");
611 sb.append("dragAndDropToObject(\"");
612 sb.append(param2);
613 sb.append("\", \"");
614 sb.append(param3);
615 sb.append("\");");
616 }
617 else if (param1.equals("echo")) {
618 sb.append("System.out.println(\"");
619 sb.append(param2);
620 sb.append("\");");
621 }
622 else if (param1.equals("gotoIf")) {
623 String conditional = StringUtil.replace(
624 param2, new String[] {"${", "}"}, new String[] {"", ""});
625
626 sb.append("if (");
627 sb.append(conditional);
628 sb.append(") {");
629 sb.append("label =");
630 sb.append(labels.get(param3));
631 sb.append(";");
632 sb.append("continue;");
633 sb.append("}");
634 }
635 else if (param1.equals("label")) {
636 String label = labels.get(param2);
637
638 sb.append("case ");
639 sb.append(label);
640 sb.append(":");
641 }
642 else if (param1.equals("pause")) {
643 sb.append("Thread.sleep(");
644 sb.append(param2);
645 sb.append(");");
646 }
647 else if (param1.equals("refreshAndWait") ||
648 param1.equals("windowMaximizeAndWait")) {
649
650 String text = param1.substring(0, param1.length() - 7);
651
652 sb.append("selenium.");
653 sb.append(text);
654 sb.append("();");
655 sb.append("selenium.waitForPageToLoad(\"30000\");");
656 }
657 else if (param1.equals("store")) {
658 sb.append("boolean ");
659 sb.append(param3);
660 sb.append(" = ");
661
662 if (param2.startsWith("eval(")) {
663 String eval = param2.substring(5, param2.length() - 1);
664
665 eval = StringUtil.replace(eval, "'", "\"");
666
667 sb.append(eval);
668 }
669
670 sb.append(";");
671 }
672 else if (param1.equals("storeCurrentDay")) {
673 sb.append("String ");
674 sb.append(param2);
675 sb.append(" = selenium.getCurrentDay();");
676
677 sb.append("RuntimeVariables.setValue(\"");
678 sb.append(param2);
679 sb.append("\", ");
680 sb.append(param2);
681 sb.append(");");
682 }
683 else if (param1.equals("storeCurrentMonth")) {
684 sb.append("String ");
685 sb.append(param2);
686 sb.append(" = selenium.getCurrentMonth();");
687
688 sb.append("RuntimeVariables.setValue(\"");
689 sb.append(param2);
690 sb.append("\", ");
691 sb.append(param2);
692 sb.append(");");
693 }
694 else if (param1.equals("storeCurrentYear")) {
695 sb.append("String ");
696 sb.append(param2);
697 sb.append(" = selenium.getCurrentYear();");
698
699 sb.append("RuntimeVariables.setValue(\"");
700 sb.append(param2);
701 sb.append("\", ");
702 sb.append(param2);
703 sb.append(");");
704 }
705 else if (param1.equals("storeFirstNumber")) {
706 sb.append("String ");
707 sb.append(param3);
708 sb.append(" = selenium.getFirstNumber(\"");
709 sb.append(param2);
710 sb.append("\");");
711
712 sb.append("RuntimeVariables.setValue(\"");
713 sb.append(param3);
714 sb.append("\", ");
715 sb.append(param3);
716 sb.append(");");
717 }
718 else if (param1.equals("storeFirstNumberIncrement")) {
719 sb.append("String ");
720 sb.append(param3);
721 sb.append(" = selenium.getFirstNumberIncrement(\"");
722 sb.append(param2);
723 sb.append("\");");
724
725 sb.append("RuntimeVariables.setValue(\"");
726 sb.append(param3);
727 sb.append("\", ");
728 sb.append(param3);
729 sb.append(");");
730 }
731 else if (param1.equals("storeLocation")) {
732 sb.append("String ");
733 sb.append(param2);
734 sb.append(" = selenium.getLocation();");
735
736 sb.append("RuntimeVariables.setValue(\"");
737 sb.append(param2);
738 sb.append("\", ");
739 sb.append(param2);
740 sb.append(");");
741 }
742 else if (param1.equals("storeText")) {
743 sb.append("String ");
744 sb.append(param3);
745 sb.append(" = selenium.getText(\"");
746 sb.append(param2);
747 sb.append("\");");
748
749 sb.append("RuntimeVariables.setValue(\"");
750 sb.append(param3);
751 sb.append("\", ");
752 sb.append(param3);
753 sb.append(");");
754 }
755 else if (param1.equals("verifyElementNotPresent") ||
756 param1.equals("verifyElementPresent")) {
757
758 if (param1.equals("verifyElementNotPresent")) {
759 sb.append("verifyFalse");
760 }
761 else if (param1.equals("verifyElementPresent")) {
762 sb.append("verifyTrue");
763 }
764
765 sb.append("(selenium.isElementPresent(\"");
766 sb.append(param2);
767 sb.append("\"));");
768 }
769 else if (param1.equals("verifyTextNotPresent") ||
770 param1.equals("verifyTextPresent")) {
771
772 if (param1.equals("verifyTextNotPresent")) {
773 sb.append("verifyFalse");
774 }
775 else if (param1.equals("verifyTextPresent")) {
776 sb.append("verifyTrue");
777 }
778
779 sb.append("(selenium.isTextPresent(\"");
780 sb.append(param2);
781 sb.append("\"));");
782 }
783 else if (param1.equals("verifyTitle")) {
784 sb.append("verifyEquals(\"");
785 sb.append(param2);
786 sb.append("\", selenium.getTitle());");
787 }
788 else if (param1.equals("waitForElementNotPresent") ||
789 param1.equals("waitForElementPresent") ||
790 param1.equals("waitForNotPartialText") ||
791 param1.equals("waitForNotSelectedLabel") ||
792 param1.equals("waitForNotTable") ||
793 param1.equals("waitForNotText") ||
794 param1.equals("waitForNotValue") ||
795 param1.equals("waitForNotVisible") ||
796 param1.equals("waitForPartialText") ||
797 param1.equals("waitForSelectedLabel") ||
798 param1.equals("waitForTable") ||
799 param1.equals("waitForText") ||
800 param1.equals("waitForTextNotPresent") ||
801 param1.equals("waitForTextPresent") ||
802 param1.equals("waitForValue") ||
803 param1.equals("waitForVisible")) {
804
805 sb.append("for (int second = 0;; second++) {");
806 sb.append("if (second >= 60) {");
807 sb.append("fail(\"timeout\");");
808 sb.append("}");
809
810 sb.append("try {");
811 sb.append("if (");
812
813 if (param1.equals("waitForElementNotPresent") ||
814 param1.equals("waitForNotPartialText") ||
815 param1.equals("waitForNotSelectedLabel") ||
816 param1.equals("waitForNotTable") ||
817 param1.equals("waitForNotText") ||
818 param1.equals("waitForNotValue") ||
819 param1.equals("waitForNotVisible") ||
820 param1.equals("waitForTextNotPresent")) {
821
822 sb.append("!");
823 }
824
825 if (param1.equals("waitForElementNotPresent") ||
826 param1.equals("waitForElementPresent")) {
827
828 sb.append("selenium.isElementPresent");
829 sb.append("(\"");
830 sb.append(param2);
831 sb.append("\")");
832 }
833 else if (param1.equals("waitForNotPartialText") ||
834 param1.equals("waitForPartialText")) {
835
836 sb.append("selenium.isPartialText(\"");
837 sb.append(param2);
838 sb.append("\", ");
839
840 if (param3.startsWith("${")) {
841 sb.append("RuntimeVariables.getValue(\"");
842
843 String text = param3.substring(2, param3.length() - 1);
844
845 sb.append(text);
846 sb.append("\")");
847 }
848 else {
849 sb.append("\"");
850 sb.append(param3);
851 sb.append("\"");
852 }
853
854 sb.append(")");
855 }
856 else if (param1.equals("waitForNotSelectedLabel") ||
857 param1.equals("waitForSelectedLabel"))
858 {
859
860 if (param3.startsWith("${")) {
861 sb.append("RuntimeVariables.getValue(\"");
862
863 String text = param3.substring(2, param3.length() - 1);
864
865 sb.append(text);
866 sb.append("\")");
867 }
868 else {
869 sb.append("\"");
870 sb.append(param3);
871 sb.append("\"");
872 }
873
874 sb.append(".equals(selenium.getSelectedLabel(\"");
875 sb.append(param2);
876 sb.append("\"))");
877 }
878 else if (param1.equals("waitForNotTable") ||
879 param1.equals("waitForTable")) {
880
881 sb.append("StringPool.BLANK.equals(selenium.getTable(\"");
882 sb.append(param2);
883 sb.append("\"))");
884 }
885 else if (param1.equals("waitForNotText") ||
886 param1.equals("waitForText")) {
887
888 sb.append("RuntimeVariables.replace(\"");
889 sb.append(param3);
890 sb.append("\").equals(selenium.getText(\"");
891 sb.append(param2);
892 sb.append("\"))");
893 }
894 else if (param1.equals("waitForNotValue") ||
895 param1.equals("waitForValue")) {
896
897 sb.append("RuntimeVariables.replace(\"");
898 sb.append(param3);
899 sb.append("\").equals(selenium.getValue(\"");
900 sb.append(param2);
901 sb.append("\"))");
902 }
903 else if (param1.equals("waitForNotVisible") ||
904 param1.equals("waitForVisible")) {
905
906 sb.append("selenium.isVisible");
907 sb.append("(\"");
908 sb.append(param2);
909 sb.append("\")");
910 }
911 else if (param1.equals("waitForTextNotPresent") ||
912 param1.equals("waitForTextPresent")) {
913
914 sb.append("selenium.isTextPresent");
915 sb.append("(\"");
916 sb.append(param2);
917 sb.append("\")");
918 }
919
920 sb.append(") {");
921 sb.append("break;");
922 sb.append("}");
923 sb.append("}");
924 sb.append("catch (Exception e) {");
925 sb.append("}");
926
927 sb.append("Thread.sleep(1000);");
928 sb.append("}");
929 }
930 else {
931 System.out.println(param1 + " was not translated");
932 }
933
934 Boolean takeScreenShot = takeScreenShots.get(x);
935
936 if (takeScreenShot == null) {
937 takeScreenShot = Boolean.TRUE;
938 }
939
940 if (takeScreenShot) {
941 if (param1.equals("assertChecked") ||
942 param1.equals("assertConfirmation") ||
943 param1.equals("assertNotChecked") ||
944 param1.equals("clickAndWait") ||
945 param1.equals("clickAtAndWait") ||
946 param1.equals("keyPressAndWait") ||
947 param1.equals("selectAndWait") ||
948 param1.equals("selectWindow") ||
949 param1.equals("waitForElementNotPresent") ||
950 param1.equals("waitForNotPartialText") ||
951 param1.equals("waitForNotSelectedLabel") ||
952 param1.equals("waitForNotTable") ||
953 param1.equals("waitForNotText") ||
954 param1.equals("waitForNotValue") ||
955 param1.equals("waitForNotVisible") ||
956 param1.equals("waitForPartialText") ||
957 param1.equals("waitForSelectedLabel") ||
958 param1.equals("waitForTable") ||
959 param1.equals("waitForText") ||
960 param1.equals("waitForTextNotPresent") ||
961 param1.equals("waitForTextPresent") ||
962 param1.equals("waitForValue") ||
963 param1.equals("waitForVisible")) {
964
965 sb.append("selenium.saveScreenShotAndSource();");
966 }
967 else if (param1.equals("selectFrame") &&
968 param2.equals("relative=top")) {
969
970 sb.append("selenium.saveScreenShotAndSource();");
971 }
972 else if (param1.equals("type") && !param2.equals("//body")) {
973 sb.append("selenium.saveScreenShotAndSource();");
974 }
975 else if (
976 param1.equals("typeKeys") && !param2.equals("//body")) {
977
978 sb.append("selenium.saveScreenShotAndSource();");
979 }
980 else if (param1.equals("waitForElementPresent") &&
981 !param2.equals("_15_editor") &&
982 !param2.equals(
983 "_15_structure_el_TextAreaField_content") &&
984 !param2.equals("_33_editor") &&
985 !param2.equals("cke_contents_CKEditor1") &&
986 !param2.equals("FCKeditor1___Frame")) {
987
988 sb.append("selenium.saveScreenShotAndSource();");
989 }
990 }
991 }
992
993 if (labels.size() > 0) {
994 sb.append("case 100:");
995 sb.append("label = -1;");
996 sb.append("}");
997 sb.append("}");
998 }
999
1000 sb.append("}");
1001 sb.append("}");
1002
1003 String content = sb.toString();
1004
1005 ServiceBuilder.writeFile(new File(testFileName), content);
1006 }
1007
1008 private static final String[] _FIX_PARAM_OLD_SUBS = new String[] {
1009 "\\\\n", "<br />"
1010 };
1011
1012 private static final String[] _FIX_PARAM_NEW_SUBS = new String[] {
1013 "\\n", "\\n"
1014 };
1015
1016}