1010import org .slf4j .LoggerFactory ;
1111import org .springframework .beans .factory .annotation .Autowired ;
1212import org .springframework .stereotype .Component ;
13+ import org .suren .autotest .web .framework .core .action .AdvanceValueEditor ;
1314import org .suren .autotest .web .framework .core .action .ValueEditor ;
1415import org .suren .autotest .web .framework .core .ui .Element ;
1516import org .suren .autotest .web .framework .selenium .SeleniumEngine ;
1617import org .suren .autotest .web .framework .selenium .strategy .SearchStrategyUtils ;
18+ import org .suren .autotest .web .framework .util .StringUtils ;
1719
1820/**
1921 * 给文本框中填入值
2022 * @author suren
2123 * @since jdk1.6 2016年6月29日
2224 */
2325@ Component
24- public class SeleniumValueEditor implements ValueEditor
26+ public class SeleniumValueEditor implements ValueEditor , AdvanceValueEditor
2527{
2628 private static final Logger logger = LoggerFactory .getLogger (SeleniumValueEditor .class );
2729
@@ -41,6 +43,33 @@ public Object getValue(Element ele)
4143 */
4244 @ Override
4345 public void setValue (Element ele , Object value )
46+ {
47+ fillValue (ele , value , false );
48+ }
49+
50+ @ Override
51+ public void appendValue (Element ele , Object value )
52+ {
53+ fillValue (ele , value , true );
54+ }
55+
56+ @ Override
57+ public void fillNotBlankValue (Element ele , Object value )
58+ {
59+ if (value == null || StringUtils .isBlank (value .toString ()))
60+ {
61+ throw new RuntimeException ("Can not allow null or empty value!" );
62+ }
63+
64+ fillValue (ele , value , true );
65+ }
66+
67+ /**
68+ * @param ele
69+ * @param value
70+ * @param append 是否追加
71+ */
72+ private void fillValue (Element ele , Object value , boolean append )
4473 {
4574 if (value == null )
4675 {
@@ -62,15 +91,21 @@ public void setValue(Element ele, Object value)
6291 String valueStr = value .toString ();
6392
6493 webEle .click ();
65- webEle .clear ();
94+ if (!append )
95+ {
96+ webEle .clear ();
97+ }
6698 webEle .sendKeys (value .toString ());
6799
68100 if ("input" .equals (webEle .getTagName ()))
69101 {
70102 if (!valueStr .equals (webEle .getAttribute ("value" )))
71103 {
72104 webEle .click ();
73- webEle .clear ();
105+ if (!append )
106+ {
107+ webEle .clear ();
108+ }
74109 webEle .sendKeys (value .toString ());
75110 }
76111 }
@@ -82,7 +117,10 @@ public void setValue(Element ele, Object value)
82117 ((JavascriptExecutor ) engine .getDriver ()).executeScript ("arguments[0].scrollIntoView();" , webEle );
83118
84119 webEle .click ();
85- webEle .clear ();
120+ if (!append )
121+ {
122+ webEle .clear ();
123+ }
86124 webEle .sendKeys (value .toString ());
87125 }
88126 else
0 commit comments