mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-10 17:43:00 +08:00
180 lines
3.6 KiB
Go
180 lines
3.6 KiB
Go
package server
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/httprunner/httprunner/v5/uixt"
|
|
"github.com/httprunner/httprunner/v5/uixt/option"
|
|
)
|
|
|
|
func (r *Router) tapHandler(c *gin.Context) {
|
|
var tapReq TapRequest
|
|
if err := c.ShouldBindJSON(&tapReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if tapReq.Duration > 0 {
|
|
err = driver.Drag(tapReq.X, tapReq.Y, tapReq.X, tapReq.Y,
|
|
option.WithDuration(tapReq.Duration))
|
|
} else {
|
|
err = driver.TapXY(tapReq.X, tapReq.Y)
|
|
}
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) rightClickHandler(c *gin.Context) {
|
|
var rightClickReq TapRequest
|
|
if err := c.ShouldBindJSON(&rightClickReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = driver.IDriver.(*uixt.BrowserDriver).
|
|
SecondaryClick(rightClickReq.X, rightClickReq.Y)
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) uploadHandler(c *gin.Context) {
|
|
var uploadRequest uploadRequest
|
|
if err := c.ShouldBindJSON(&uploadRequest); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
err = driver.IDriver.(*uixt.BrowserDriver).
|
|
UploadFile(uploadRequest.X, uploadRequest.Y,
|
|
uploadRequest.FileUrl, uploadRequest.FileFormat)
|
|
if err != nil {
|
|
c.Abort()
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) hoverHandler(c *gin.Context) {
|
|
var hoverReq HoverRequest
|
|
if err := c.ShouldBindJSON(&hoverReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
|
|
err = driver.IDriver.(*uixt.BrowserDriver).
|
|
Hover(hoverReq.X, hoverReq.Y)
|
|
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) scrollHandler(c *gin.Context) {
|
|
var scrollReq ScrollRequest
|
|
if err := c.ShouldBindJSON(&scrollReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
|
|
err = driver.IDriver.(*uixt.BrowserDriver).
|
|
Scroll(scrollReq.Delta)
|
|
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) doubleTapHandler(c *gin.Context) {
|
|
var tapReq TapRequest
|
|
if err := c.ShouldBindJSON(&tapReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = driver.DoubleTap(tapReq.X, tapReq.Y)
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) dragHandler(c *gin.Context) {
|
|
var dragReq DragRequest
|
|
if err := c.ShouldBindJSON(&dragReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
if dragReq.Duration == 0 {
|
|
dragReq.Duration = 1
|
|
}
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = driver.Drag(dragReq.FromX, dragReq.FromY, dragReq.ToX, dragReq.ToY,
|
|
option.WithDuration(dragReq.Duration),
|
|
option.WithPressDuration(dragReq.PressDuration))
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|
|
|
|
func (r *Router) inputHandler(c *gin.Context) {
|
|
var inputReq InputRequest
|
|
if err := c.ShouldBindJSON(&inputReq); err != nil {
|
|
RenderErrorValidateRequest(c, err)
|
|
return
|
|
}
|
|
driver, err := r.GetDriver(c)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = driver.Input(inputReq.Text, option.WithFrequency(inputReq.Frequency))
|
|
if err != nil {
|
|
RenderError(c, err)
|
|
return
|
|
}
|
|
RenderSuccess(c, true)
|
|
}
|