1111import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
1212import org .springframework .context .annotation .Scope ;
1313import org .springframework .stereotype .Component ;
14+ import org .suren .autotest .web .framework .core .action .AdvanceValueEditor ;
1415import org .suren .autotest .web .framework .core .action .ClickAble ;
1516import org .suren .autotest .web .framework .core .action .ValueEditor ;
1617import org .suren .autotest .web .framework .selenium .SeleniumEngine ;
@@ -32,6 +33,8 @@ public class Text extends AbstractElement
3233 @ Autowired
3334 private ValueEditor valueEditor ;
3435 @ Autowired
36+ private AdvanceValueEditor advanceValueEditor ;
37+ @ Autowired
3538 private ClickAble clickAble ;
3639 @ Autowired
3740 private SeleniumEngine engine ;
@@ -65,7 +68,6 @@ public Text fillValue()
6568 String val4Fill = value ;
6669 if (StringUtils .isNotBlank (callback ))
6770 {
68- System .out .println (Thread .currentThread ().getName ());;
6971 String methodName = "execute" ;
7072 String callbackClsName = callback ;
7173
@@ -131,6 +133,148 @@ public Text fillValue()
131133
132134 return this ;
133135 }
136+
137+ public Text appendValue ()
138+ {
139+ String val4Fill = value ;
140+ if (StringUtils .isNotBlank (callback ))
141+ {
142+ String methodName = "execute" ;
143+ String callbackClsName = callback ;
144+
145+ int methodIndex = callback .indexOf ("!" );
146+ if (methodIndex != -1 && !callback .endsWith ("!" ))
147+ {
148+ methodName = callback .substring (methodIndex + 1 );
149+ callbackClsName = callback .substring (0 , methodIndex );
150+ }
151+
152+ try
153+ {
154+ if (!callbackClsName .contains ("." ))
155+ {
156+ //这种情况下,就调用框架内部的类
157+ Map <Object , Object > engineConfig = engine .getEngineConfig ();
158+ String pkg = (String ) engineConfig .get ("invoker.package" );
159+ if (StringUtils .isBlank (pkg ))
160+ {
161+ pkg = "org.suren.autotest.web.framework.invoker" ;
162+ }
163+
164+ callbackClsName = (pkg + "." + callbackClsName );
165+ }
166+
167+ Class <?> callbackCls = Class .forName (callbackClsName );
168+ Method callbackMethod = callbackCls .getMethod (methodName ,
169+ SeleniumEngine .class , String .class );
170+
171+ Object result = callbackMethod .invoke (null , engine , value );
172+ if (result != null )
173+ {
174+ val4Fill = result .toString ();
175+ }
176+ }
177+ catch (ClassNotFoundException e )
178+ {
179+ e .printStackTrace ();
180+ }
181+ catch (NoSuchMethodException e )
182+ {
183+ e .printStackTrace ();
184+ }
185+ catch (SecurityException e )
186+ {
187+ e .printStackTrace ();
188+ }
189+ catch (IllegalAccessException e )
190+ {
191+ e .printStackTrace ();
192+ }
193+ catch (IllegalArgumentException e )
194+ {
195+ e .printStackTrace ();
196+ }
197+ catch (InvocationTargetException e )
198+ {
199+ e .printStackTrace ();
200+ }
201+ }
202+
203+ advanceValueEditor .appendValue (this , val4Fill );
204+
205+ return this ;
206+ }
207+
208+ public Text fillNotBlankValue ()
209+ {
210+ String val4Fill = value ;
211+ if (StringUtils .isNotBlank (callback ))
212+ {
213+ String methodName = "execute" ;
214+ String callbackClsName = callback ;
215+
216+ int methodIndex = callback .indexOf ("!" );
217+ if (methodIndex != -1 && !callback .endsWith ("!" ))
218+ {
219+ methodName = callback .substring (methodIndex + 1 );
220+ callbackClsName = callback .substring (0 , methodIndex );
221+ }
222+
223+ try
224+ {
225+ if (!callbackClsName .contains ("." ))
226+ {
227+ //这种情况下,就调用框架内部的类
228+ Map <Object , Object > engineConfig = engine .getEngineConfig ();
229+ String pkg = (String ) engineConfig .get ("invoker.package" );
230+ if (StringUtils .isBlank (pkg ))
231+ {
232+ pkg = "org.suren.autotest.web.framework.invoker" ;
233+ }
234+
235+ callbackClsName = (pkg + "." + callbackClsName );
236+ }
237+
238+ Class <?> callbackCls = Class .forName (callbackClsName );
239+ Method callbackMethod = callbackCls .getMethod (methodName ,
240+ SeleniumEngine .class , String .class );
241+
242+ Object result = callbackMethod .invoke (null , engine , value );
243+ if (result != null )
244+ {
245+ val4Fill = result .toString ();
246+ }
247+ }
248+ catch (ClassNotFoundException e )
249+ {
250+ e .printStackTrace ();
251+ }
252+ catch (NoSuchMethodException e )
253+ {
254+ e .printStackTrace ();
255+ }
256+ catch (SecurityException e )
257+ {
258+ e .printStackTrace ();
259+ }
260+ catch (IllegalAccessException e )
261+ {
262+ e .printStackTrace ();
263+ }
264+ catch (IllegalArgumentException e )
265+ {
266+ e .printStackTrace ();
267+ }
268+ catch (InvocationTargetException e )
269+ {
270+ e .printStackTrace ();
271+ }
272+ }
273+
274+ advanceValueEditor .fillNotBlankValue (this , val4Fill );
275+
276+ return this ;
277+ }
134278
135279 /**
136280 * @return 预备的数据
0 commit comments