feat: input params by funcion in ui automation

This commit is contained in:
xucong.053
2022-10-13 14:17:24 +08:00
parent 1392fe293f
commit c9279fb4f7
4 changed files with 21 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ var Functions = map[string]interface{}{
"md5": MD5, // call with one argument
"parameterize": loadFromCSV,
"P": loadFromCSV,
"split_by_comma": splitByComma, // call with one argument
"environ": os.Getenv,
"ENV": os.Getenv,
"load_ws_message": loadMessage,
@@ -225,3 +226,7 @@ func multipartContentType(w *TFormDataWriter) string {
}
return w.Writer.FormDataContentType()
}
func splitByComma(s string) []string {
return strings.Split(s, ",")
}

View File

@@ -67,6 +67,7 @@ type MobileAction struct {
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"` // used to identify the action in log
MaxRetryTimes int `json:"max_retry_times,omitempty" yaml:"max_retry_times,omitempty"` // max retry times
Direction interface{} `json:"direction,omitempty" yaml:"direction,omitempty"` // used by swipe to tap text or app
Function string `json:"function,omitempty" yaml:"function,omitempty"` // used to replace params
Index int `json:"index,omitempty" yaml:"index,omitempty"` // index of the target element, should start from 1
Timeout int `json:"timeout,omitempty" yaml:"timeout,omitempty"` // TODO: wait timeout in seconds for mobile action
IgnoreNotFoundError bool `json:"ignore_NotFoundError,omitempty" yaml:"ignore_NotFoundError,omitempty"` // ignore error if target element not found
@@ -89,6 +90,13 @@ func WithIndex(index int) ActionOption {
}
}
// WithFunction replaces params
func WithFunction(function string) ActionOption {
return func(o *MobileAction) {
o.Function = function
}
}
// WithDirection inputs direction (up, down, left, right)
func WithDirection(direction string) ActionOption {
return func(o *MobileAction) {

View File

@@ -31,6 +31,7 @@ var (
WithDescription = uixt.WithDescription
WithDirection = uixt.WithDirection
WithCustomDirection = uixt.WithCustomDirection
WithFunction = uixt.WithFunction
)
var (

View File

@@ -618,6 +618,13 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err
// run actions
for _, action := range actions {
if action.Function != "" {
parsedParams, err := parser.ParseString(action.Function, stepVariables)
if err != nil {
return stepResult, err
}
action.Params = parsedParams
}
if action.Params, err = parser.Parse(action.Params, stepVariables); err != nil {
return stepResult, errors.Wrap(err, "parse action params failed")
}