fix: failed to set steps option of android swipe action

This commit is contained in:
xucong.053
2022-11-09 18:19:57 +08:00
parent 093a4f5206
commit 951c00d9fa
3 changed files with 23 additions and 3 deletions

View File

@@ -581,7 +581,6 @@ func (ud *uiaDriver) _swipe(startX, startY, endX, endY interface{}, options ...D
// per step. So for a 100 steps, the swipe will take about 1/2 second to complete. // per step. So for a 100 steps, the swipe will take about 1/2 second to complete.
// `steps` is the number of move steps sent to the system // `steps` is the number of move steps sent to the system
func (ud *uiaDriver) Swipe(fromX, fromY, toX, toY int, options ...DataOption) error { func (ud *uiaDriver) Swipe(fromX, fromY, toX, toY int, options ...DataOption) error {
options = append(options, WithDataSteps(12))
return ud.SwipeFloat(float64(fromX), float64(fromY), float64(toX), float64(toY), options...) return ud.SwipeFloat(float64(fromX), float64(fromY), float64(toX), float64(toY), options...)
} }

View File

@@ -68,6 +68,8 @@ type MobileAction struct {
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"` // used to identify the action in log Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"` // used to identify the action in log
MaxRetryTimes int `json:"max_retry_times,omitempty" yaml:"max_retry_times,omitempty"` // max retry times MaxRetryTimes int `json:"max_retry_times,omitempty" yaml:"max_retry_times,omitempty"` // max retry times
WaitTime float64 `json:"wait_time,omitempty" yaml:"wait_time,omitempty"` // wait time between swipe and ocr, unit: second WaitTime float64 `json:"wait_time,omitempty" yaml:"wait_time,omitempty"` // wait time between swipe and ocr, unit: second
Duration float64 `json:"duration,omitempty" yaml:"duration,omitempty"` // used to set duration of ios swipe action
Steps int `json:"steps,omitempty" yaml:"steps,omitempty"` // used to set steps of android swipe action
Direction interface{} `json:"direction,omitempty" yaml:"direction,omitempty"` // used by swipe to tap text or app Direction interface{} `json:"direction,omitempty" yaml:"direction,omitempty"` // used by swipe to tap text or app
Scope []float64 `json:"scope,omitempty" yaml:"scope,omitempty"` // used by ocr to get text position in the scope Scope []float64 `json:"scope,omitempty" yaml:"scope,omitempty"` // used by ocr to get text position in the scope
Offset []int `json:"offset,omitempty" yaml:"offset,omitempty"` // used to tap offset of point Offset []int `json:"offset,omitempty" yaml:"offset,omitempty"` // used to tap offset of point
@@ -99,6 +101,18 @@ func WithWaitTime(sec float64) ActionOption {
} }
} }
func WithDuration(duration float64) ActionOption {
return func(o *MobileAction) {
o.Duration = duration
}
}
func WithSteps(steps int) ActionOption {
return func(o *MobileAction) {
o.Steps = steps
}
}
// WithDirection inputs direction (up, down, left, right) // WithDirection inputs direction (up, down, left, right)
func WithDirection(direction string) ActionOption { func WithDirection(direction string) ActionOption {
return func(o *MobileAction) { return func(o *MobileAction) {
@@ -585,6 +599,11 @@ func (dExt *DriverExt) DoAction(action MobileAction) error {
return fmt.Errorf("invalid %s params: %v", ACTION_DoubleTap, action.Params) return fmt.Errorf("invalid %s params: %v", ACTION_DoubleTap, action.Params)
case ACTION_Swipe: case ACTION_Swipe:
identifierOption := WithDataIdentifier(action.Identifier) identifierOption := WithDataIdentifier(action.Identifier)
durationOption := WithDataPressDuration(action.Duration)
if action.Steps == 0 {
action.Steps = 10
}
stepsOption := WithDataSteps(action.Steps)
if positions, ok := action.Params.([]interface{}); ok { if positions, ok := action.Params.([]interface{}); ok {
// relative fromX, fromY, toX, toY of window size: [0.5, 0.9, 0.5, 0.1] // relative fromX, fromY, toX, toY of window size: [0.5, 0.9, 0.5, 0.1]
if len(positions) != 4 { if len(positions) != 4 {
@@ -594,10 +613,10 @@ func (dExt *DriverExt) DoAction(action MobileAction) error {
fromY, _ := positions[1].(float64) fromY, _ := positions[1].(float64)
toX, _ := positions[2].(float64) toX, _ := positions[2].(float64)
toY, _ := positions[3].(float64) toY, _ := positions[3].(float64)
return dExt.SwipeRelative(fromX, fromY, toX, toY, identifierOption) return dExt.SwipeRelative(fromX, fromY, toX, toY, identifierOption, durationOption, stepsOption)
} }
if direction, ok := action.Params.(string); ok { if direction, ok := action.Params.(string); ok {
return dExt.SwipeTo(direction, identifierOption) return dExt.SwipeTo(direction, identifierOption, durationOption, stepsOption)
} }
return fmt.Errorf("invalid %s params: %v", ACTION_Swipe, action.Params) return fmt.Errorf("invalid %s params: %v", ACTION_Swipe, action.Params)
case ACTION_Input: case ACTION_Input:

View File

@@ -29,6 +29,8 @@ var (
WithText = uixt.WithText WithText = uixt.WithText
WithID = uixt.WithID WithID = uixt.WithID
WithDescription = uixt.WithDescription WithDescription = uixt.WithDescription
WithDuration = uixt.WithDuration
WIthSteps = uixt.WithSteps
WithDirection = uixt.WithDirection WithDirection = uixt.WithDirection
WithCustomDirection = uixt.WithCustomDirection WithCustomDirection = uixt.WithCustomDirection
WithScope = uixt.WithScope WithScope = uixt.WithScope