refactor: integrate and optimize MCP tool calling methods

This commit is contained in:
lilong.129
2025-05-27 21:39:17 +08:00
parent 229fd4678c
commit 2fe5b14d63
8 changed files with 140 additions and 120 deletions

View File

@@ -448,6 +448,16 @@ func (s *StepMobile) ClosePopups(opts ...option.ActionOption) *StepMobile {
return s
}
func (s *StepMobile) Call(name string, fn func(), opts ...option.ActionOption) *StepMobile {
s.obj().Actions = append(s.obj().Actions, uixt.MobileAction{
Method: option.ACTION_CallFunction,
Params: name, // function description
Fn: fn,
Options: option.NewActionOptions(opts...),
})
return s
}
// Validate switches to step validation.
func (s *StepMobile) Validate() *StepMobileUIValidation {
return &StepMobileUIValidation{
@@ -804,6 +814,17 @@ func runStepMobileUI(s *SessionRunner, step IStep) (stepResult *StepResult, err
continue
}
// call custom function
if action.Method == option.ACTION_CallFunction {
if funcDesc, ok := action.Params.(string); ok {
err := uiDriver.Call(funcDesc, action.Fn, action.GetOptions()...)
if err != nil {
return stepResult, err
}
}
continue
}
err = uiDriver.ExecuteAction(context.Background(), action)
actionResult.Elapsed = time.Since(actionStartTime).Milliseconds()
stepResult.Actions = append(stepResult.Actions, actionResult)