fix: wda offset error by scale

This commit is contained in:
lilong.129
2025-07-02 22:03:40 +08:00
parent 65be9afe08
commit 7673a64184
5 changed files with 97 additions and 59 deletions

View File

@@ -538,13 +538,6 @@ func (wd *WDADriver) TapAbsXY(x, y float64, opts ...option.ActionOption) error {
// [[FBRoute POST:@"/wda/tap/:uuid"] respondWithTarget:self action:@selector(handleTap:)]
var err error
if x, err = wd.toScale(x); err != nil {
return err
}
if y, err = wd.toScale(y); err != nil {
return err
}
actionOptions := option.NewActionOptions(opts...)
x, y, err = preHandler_TapAbsXY(wd, actionOptions, x, y)
if err != nil {
@@ -552,6 +545,13 @@ func (wd *WDADriver) TapAbsXY(x, y float64, opts ...option.ActionOption) error {
}
defer postHandler(wd, option.ACTION_TapAbsXY, actionOptions)
if x, err = wd.toScale(x); err != nil {
return err
}
if y, err = wd.toScale(y); err != nil {
return err
}
data := map[string]interface{}{
"x": x,
"y": y,
@@ -567,13 +567,6 @@ func (wd *WDADriver) DoubleTap(x, y float64, opts ...option.ActionOption) error
// [[FBRoute POST:@"/wda/doubleTap"] respondWithTarget:self action:@selector(handleDoubleTapCoordinate:)]
var err error
if x, err = wd.toScale(x); err != nil {
return err
}
if y, err = wd.toScale(y); err != nil {
return err
}
actionOptions := option.NewActionOptions(opts...)
x, y, err = preHandler_DoubleTap(wd, actionOptions, x, y)
if err != nil {
@@ -581,6 +574,12 @@ func (wd *WDADriver) DoubleTap(x, y float64, opts ...option.ActionOption) error
}
defer postHandler(wd, option.ACTION_DoubleTapXY, actionOptions)
if x, err = wd.toScale(x); err != nil {
return err
}
if y, err = wd.toScale(y); err != nil {
return err
}
data := map[string]interface{}{
"x": x,
"y": y,
@@ -606,6 +605,13 @@ func (wd *WDADriver) Drag(fromX, fromY, toX, toY float64, opts ...option.ActionO
// [[FBRoute POST:@"/wda/dragfromtoforduration"] respondWithTarget:self action:@selector(handleDragCoordinate:)]
var err error
actionOptions := option.NewActionOptions(opts...)
fromX, fromY, toX, toY, err = preHandler_Drag(wd, actionOptions, fromX, fromY, toX, toY)
if err != nil {
return err
}
defer postHandler(wd, option.ACTION_Drag, actionOptions)
if fromX, err = wd.toScale(fromX); err != nil {
return err
}
@@ -618,14 +624,6 @@ func (wd *WDADriver) Drag(fromX, fromY, toX, toY float64, opts ...option.ActionO
if toY, err = wd.toScale(toY); err != nil {
return err
}
actionOptions := option.NewActionOptions(opts...)
fromX, fromY, toX, toY, err = preHandler_Drag(wd, actionOptions, fromX, fromY, toX, toY)
if err != nil {
return err
}
defer postHandler(wd, option.ACTION_Drag, actionOptions)
data := map[string]interface{}{
"fromX": builtin.RoundToOneDecimal(fromX),
"fromY": builtin.RoundToOneDecimal(fromY),

View File

@@ -354,29 +354,52 @@ func (o *ActionOptions) ToMap() map[string]interface{} {
}
func (o *ActionOptions) ApplyTapOffset(absX, absY float64) (float64, float64) {
xOffset := 0.0
yOffset := 0.0
if len(o.TapOffset) == 2 {
absX += float64(o.TapOffset[0])
absY += float64(o.TapOffset[1])
xOffset += float64(o.TapOffset[0])
yOffset += float64(o.TapOffset[1])
}
absX += o.generateRandomOffset()
absY += o.generateRandomOffset()
return absX, absY
xOffset += o.generateRandomOffset()
yOffset += o.generateRandomOffset()
if xOffset != 0.0 || yOffset != 0.0 {
log.Debug().
Float64("x_offset", xOffset).
Float64("y_offset", yOffset).
Msg("ApplyTapOffset")
}
return absX + xOffset, absY + yOffset
}
func (o *ActionOptions) ApplySwipeOffset(absFromX, absFromY, absToX, absToY float64) (
float64, float64, float64, float64,
) {
fromXOffset := 0.0
fromYOffset := 0.0
toXOffset := 0.0
toYOffset := 0.0
if len(o.SwipeOffset) == 4 {
absFromX += float64(o.SwipeOffset[0])
absFromY += float64(o.SwipeOffset[1])
absToX += float64(o.SwipeOffset[2])
absToY += float64(o.SwipeOffset[3])
fromXOffset += float64(o.SwipeOffset[0])
fromYOffset += float64(o.SwipeOffset[1])
toXOffset += float64(o.SwipeOffset[2])
toYOffset += float64(o.SwipeOffset[3])
}
absFromX += o.generateRandomOffset()
absFromY += o.generateRandomOffset()
absToX += o.generateRandomOffset()
absToY += o.generateRandomOffset()
return absFromX, absFromY, absToX, absToY
fromXOffset += o.generateRandomOffset()
fromYOffset += o.generateRandomOffset()
toXOffset += o.generateRandomOffset()
toYOffset += o.generateRandomOffset()
if fromXOffset != 0.0 || fromYOffset != 0.0 || toXOffset != 0.0 || toYOffset != 0.0 {
log.Debug().
Float64("from_x_offset", fromXOffset).
Float64("from_y_offset", fromYOffset).
Float64("to_x_offset", toXOffset).
Float64("to_y_offset", toYOffset).
Msg("ApplySwipeOffset")
}
return absFromX + fromXOffset, absFromY + fromYOffset,
absToX + toXOffset, absToY + toYOffset
}
func (o *ActionOptions) generateRandomOffset() float64 {