mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-15 20:38:44 +08:00
45 lines
943 B
Go
45 lines
943 B
Go
//go:build opencv
|
|
|
|
package uixt
|
|
|
|
import (
|
|
"image"
|
|
"sort"
|
|
)
|
|
|
|
func (dExt *DriverExt) GesturePassword(pathname string, password ...int) (err error) {
|
|
var rects []image.Rectangle
|
|
if rects, err = dExt.FindAllImageRect(pathname); err != nil {
|
|
return err
|
|
}
|
|
|
|
sort.Slice(rects, func(i, j int) bool {
|
|
if rects[i].Min.Y < rects[j].Min.Y {
|
|
return true
|
|
} else if rects[i].Min.Y == rects[j].Min.Y {
|
|
if rects[i].Min.X < rects[j].Min.X {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
})
|
|
|
|
touchActions := NewTouchActions(len(password)*2 + 1)
|
|
for i := range password {
|
|
x, y, width, height := dExt.MappingToRectInUIKit(rects[password[i]])
|
|
x = x + width*0.5
|
|
y = y + height*0.5
|
|
|
|
if i == 0 {
|
|
touchActions.Press(NewTouchActionPress().WithXYFloat(x, y)).
|
|
Wait(0.2)
|
|
} else {
|
|
touchActions.MoveTo(NewTouchActionMoveTo().WithXYFloat(x, y)).
|
|
Wait(0.2)
|
|
}
|
|
}
|
|
touchActions.Release()
|
|
|
|
return dExt.PerformTouchActions(touchActions)
|
|
}
|