mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 10:00:23 +08:00
feat: ApplySwipeOffset
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0-beta-2503171744
|
v5.0.0-beta-2503171757
|
||||||
|
|||||||
@@ -365,6 +365,7 @@ func (ad *ADBDriver) Drag(fromX, fromY, toX, toY float64, opts ...option.ActionO
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
duration := 200.0
|
duration := 200.0
|
||||||
if actionOptions.Duration > 0 {
|
if actionOptions.Duration > 0 {
|
||||||
@@ -393,6 +394,8 @@ func (ad *ADBDriver) Swipe(fromX, fromY, toX, toY float64, opts ...option.Action
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
actionOptions := option.NewActionOptions(opts...)
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
// adb shell input swipe fromX fromY toX toY
|
// adb shell input swipe fromX fromY toX toY
|
||||||
_, err = ad.runShellCommand(
|
_, err = ad.runShellCommand(
|
||||||
|
|||||||
@@ -353,6 +353,9 @@ func (ud *UIA2Driver) Drag(fromX, fromY, toX, toY float64, opts ...option.Action
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
actionOptions := option.NewActionOptions(opts...)
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
data := map[string]interface{}{
|
data := map[string]interface{}{
|
||||||
"startX": fromX,
|
"startX": fromX,
|
||||||
"startY": fromY,
|
"startY": fromY,
|
||||||
@@ -380,6 +383,7 @@ func (ud *UIA2Driver) Swipe(fromX, fromY, toX, toY float64, opts ...option.Actio
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
duration := 200.0
|
duration := 200.0
|
||||||
if actionOptions.PressDuration > 0 {
|
if actionOptions.PressDuration > 0 {
|
||||||
|
|||||||
@@ -181,11 +181,16 @@ func TestDriverExt_Action_Risk(t *testing.T) {
|
|||||||
err = driver.TapXY(0.5, 0.5, option.WithOffsetRandomRange(-10, 10))
|
err = driver.TapXY(0.5, 0.5, option.WithOffsetRandomRange(-10, 10))
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
// swipe direction with offset
|
// swipe direction with constant offset
|
||||||
err = driver.Swipe(0.5, 0.5, 0.5, 0.9,
|
err = driver.Swipe(0.5, 0.5, 0.5, 0.9,
|
||||||
option.WithSwipeOffset(-50, 50, -50, 50))
|
option.WithSwipeOffset(-50, 50, -50, 50))
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
// swipe direction with random offset
|
||||||
|
err = driver.Swipe(0.5, 0.5, 0.5, 0.9,
|
||||||
|
option.WithOffsetRandomRange(-50, 50))
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
// tap random point in ocr text rect
|
// tap random point in ocr text rect
|
||||||
err = driver.TapByOCR("首页", option.WithTapRandomRect(true))
|
err = driver.TapByOCR("首页", option.WithTapRandomRect(true))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ func (hd *HDCDriver) Swipe(fromX, fromY, toX, toY float64, opts ...option.Action
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
duration := 200
|
duration := 200
|
||||||
if actionOptions.PressDuration > 0 {
|
if actionOptions.PressDuration > 0 {
|
||||||
|
|||||||
@@ -641,6 +641,9 @@ func (wd *WDADriver) Drag(fromX, fromY, toX, toY float64, opts ...option.ActionO
|
|||||||
fromY = wd.toScale(fromY)
|
fromY = wd.toScale(fromY)
|
||||||
toX = wd.toScale(toX)
|
toX = wd.toScale(toX)
|
||||||
toY = wd.toScale(toY)
|
toY = wd.toScale(toY)
|
||||||
|
actionOptions := option.NewActionOptions(opts...)
|
||||||
|
fromX, fromY, toX, toY = actionOptions.ApplySwipeOffset(fromX, fromY, toX, toY)
|
||||||
|
|
||||||
data := map[string]interface{}{
|
data := map[string]interface{}{
|
||||||
"fromX": math.Round(fromX*10) / 10,
|
"fromX": math.Round(fromX*10) / 10,
|
||||||
"fromY": math.Round(fromY*10) / 10,
|
"fromY": math.Round(fromY*10) / 10,
|
||||||
|
|||||||
@@ -146,6 +146,21 @@ func (o *ActionOptions) ApplyTapOffset(absX, absY float64) (float64, float64) {
|
|||||||
return absX, absY
|
return absX, absY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *ActionOptions) ApplySwipeOffset(absFromX, absFromY, absToX, absToY float64) (
|
||||||
|
float64, float64, float64, float64) {
|
||||||
|
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])
|
||||||
|
}
|
||||||
|
absFromX += o.generateRandomOffset()
|
||||||
|
absFromY += o.generateRandomOffset()
|
||||||
|
absToX += o.generateRandomOffset()
|
||||||
|
absToY += o.generateRandomOffset()
|
||||||
|
return absFromX, absFromY, absToX, absToY
|
||||||
|
}
|
||||||
|
|
||||||
func (o *ActionOptions) generateRandomOffset() float64 {
|
func (o *ActionOptions) generateRandomOffset() float64 {
|
||||||
if len(o.OffsetRandomRange) != 2 {
|
if len(o.OffsetRandomRange) != 2 {
|
||||||
// invalid offset random range, should be [min, max]
|
// invalid offset random range, should be [min, max]
|
||||||
|
|||||||
Reference in New Issue
Block a user