mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-06 07:57:27 +08:00
feat: add uixt tool terminate_app
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0-beta-2505211637
|
v5.0.0-beta-2505211642
|
||||||
|
|||||||
@@ -122,6 +122,17 @@ func (ums *MCPServer4XTDriver) addTools() {
|
|||||||
ums.tools = append(ums.tools, launchAppTool)
|
ums.tools = append(ums.tools, launchAppTool)
|
||||||
ums.handlerMap[launchAppTool.Name] = ums.handleLaunchApp
|
ums.handlerMap[launchAppTool.Name] = ums.handleLaunchApp
|
||||||
|
|
||||||
|
// TerminateApp Tool
|
||||||
|
terminateAppParams := append(
|
||||||
|
[]mcp.ToolOption{mcp.WithDescription("Stop and terminate an app on mobile device")},
|
||||||
|
commonToolOptions...,
|
||||||
|
)
|
||||||
|
terminateAppParams = append(terminateAppParams, generateMCPOptions(types.AppTerminateRequest{})...)
|
||||||
|
terminateAppTool := mcp.NewTool("terminate_app", terminateAppParams...)
|
||||||
|
ums.mcpServer.AddTool(terminateAppTool, ums.handleTerminateApp)
|
||||||
|
ums.tools = append(ums.tools, terminateAppTool)
|
||||||
|
ums.handlerMap[terminateAppTool.Name] = ums.handleTerminateApp
|
||||||
|
|
||||||
// TapXY Tool
|
// TapXY Tool
|
||||||
tapParams := append(
|
tapParams := append(
|
||||||
[]mcp.ToolOption{mcp.WithDescription("Taps on the device screen at the given coordinates.")},
|
[]mcp.ToolOption{mcp.WithDescription("Taps on the device screen at the given coordinates.")},
|
||||||
@@ -237,6 +248,27 @@ func (ums *MCPServer4XTDriver) handleLaunchApp(ctx context.Context, request mcp.
|
|||||||
return mcp.NewToolResultText(fmt.Sprintf("Launched app success: %s", packageName)), nil
|
return mcp.NewToolResultText(fmt.Sprintf("Launched app success: %s", packageName)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handleTerminateApp handles the terminate_app tool call.
|
||||||
|
func (ums *MCPServer4XTDriver) handleTerminateApp(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
||||||
|
driverExt, err := ums.setupXTDriver(ctx, request.Params.Arguments)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var appTerminateReq types.AppTerminateRequest
|
||||||
|
if err := mapToStruct(request.Params.Arguments, &appTerminateReq); err != nil {
|
||||||
|
return mcp.NewToolResultError("parse parameters error: " + err.Error()), nil
|
||||||
|
}
|
||||||
|
packageName := appTerminateReq.PackageName
|
||||||
|
if packageName == "" {
|
||||||
|
return mcp.NewToolResultError("package_name is required"), nil
|
||||||
|
}
|
||||||
|
_, err = driverExt.AppTerminate(packageName)
|
||||||
|
if err != nil {
|
||||||
|
return mcp.NewToolResultError("Terminate app failed: " + err.Error()), nil
|
||||||
|
}
|
||||||
|
return mcp.NewToolResultText(fmt.Sprintf("Terminated app success: %s", packageName)), nil
|
||||||
|
}
|
||||||
|
|
||||||
// handleTapXY handles the tap_xy tool call.
|
// handleTapXY handles the tap_xy tool call.
|
||||||
func (ums *MCPServer4XTDriver) handleTapXY(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
func (ums *MCPServer4XTDriver) handleTapXY(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
||||||
driverExt, err := ums.setupXTDriver(ctx, request.Params.Arguments)
|
driverExt, err := ums.setupXTDriver(ctx, request.Params.Arguments)
|
||||||
|
|||||||
+3
-3
@@ -88,8 +88,8 @@ func (r *Router) launchAppHandler(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Router) terminalAppHandler(c *gin.Context) {
|
func (r *Router) terminalAppHandler(c *gin.Context) {
|
||||||
var appTerminalReq types.AppTerminalRequest
|
var appTerminateReq types.AppTerminateRequest
|
||||||
if err := c.ShouldBindJSON(&appTerminalReq); err != nil {
|
if err := c.ShouldBindJSON(&appTerminateReq); err != nil {
|
||||||
RenderErrorValidateRequest(c, err)
|
RenderErrorValidateRequest(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ func (r *Router) terminalAppHandler(c *gin.Context) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = driver.AppTerminate(appTerminalReq.PackageName)
|
_, err = driver.AppTerminate(appTerminateReq.PackageName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
RenderError(c, err)
|
RenderError(c, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -23,6 +23,6 @@ type AppLaunchRequest struct {
|
|||||||
PackageName string `json:"packageName" binding:"required" desc:"The package name of the app to launch"`
|
PackageName string `json:"packageName" binding:"required" desc:"The package name of the app to launch"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AppTerminalRequest struct {
|
type AppTerminateRequest struct {
|
||||||
PackageName string `json:"packageName" binding:"required"`
|
PackageName string `json:"packageName" binding:"required" desc:"The package name of the app to terminate"`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user