Files
httprunner/pkg/ghdc/ui_driver_test.go
2025-03-05 21:40:47 +08:00

275 lines
4.9 KiB
Go

package ghdc
import (
"fmt"
"sync"
"testing"
"time"
)
var (
client Client
device Device
driver *UIDriver
)
func setUp(t *testing.T) {
var err error
client, err = NewClient()
if err != nil {
t.Fatal(err)
}
devices, err := client.DeviceList()
if err != nil {
t.Fatal(err)
}
if len(devices) == 0 {
t.Fatal("not found available device")
}
device = devices[0]
driver, err = NewUIDriver(device)
if err != nil {
t.Fatal(err)
}
}
func TestDevice_Touch(t *testing.T) {
setUp(t)
err := driver.Touch(1038, 798)
if err != nil {
t.Fatal(err)
}
}
func TestDevice_Drag(t *testing.T) {
setUp(t)
err := driver.Drag(800, 1000, 200, 1000, 0.2)
if err != nil {
t.Fatal(err)
}
}
type CaptureScreenCallback struct {
count int
mux sync.Mutex
}
// OnData handles the data received
func (cb *CaptureScreenCallback) OnData(data []byte) {
cb.mux.Lock()
cb.count++
cb.mux.Unlock()
fmt.Printf("Data received: %s\n", string(data))
}
// onError handles the error received
func (cb *CaptureScreenCallback) OnError(err error) {
fmt.Printf("Error received: %v\n", err)
}
func (cb *CaptureScreenCallback) startCounter() {
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()
for range ticker.C {
cb.mux.Lock()
fmt.Printf("Screen Data received count in the last second: %d\n", cb.count)
cb.count = 0
cb.mux.Unlock()
}
}
func TestDevice_StartCaptureScreen(t *testing.T) {
setUp(t)
err := driver.StopCaptureScreen()
if err != nil {
t.Fatal(err)
}
callback := &CaptureScreenCallback{}
err = driver.StartCaptureScreen(callback)
if err != nil {
t.Fatal(err)
}
callback.startCounter()
time.Sleep(1 * time.Minute)
}
func TestDevice_StartCaptureUIAction(t *testing.T) {
setUp(t)
err := driver.StopCaptureUiAction()
if err != nil {
t.Fatal(err)
}
callback := &CaptureScreenCallback{}
err = driver.StartCaptureUiAction(callback)
if err != nil {
t.Fatal(err)
}
time.Sleep(1 * time.Minute)
}
func TestDevice_TouchDownMoveUp(t *testing.T) {
setUp(t)
for i := 0; i < 10000; i++ {
// time.Sleep(1 * time.Second)
debugLog(fmt.Sprintf("running... time %d", i))
err := driver.TouchDown(225, 1700)
if err != nil {
debugLog(err.Error())
// t.Fatal(err)
}
time.Sleep(20 * time.Millisecond)
err = driver.TouchMove(325, 1700)
if err != nil {
debugLog(err.Error())
// t.Fatal(err)
}
time.Sleep(20 * time.Millisecond)
err = driver.TouchMove(425, 1700)
if err != nil {
debugLog(err.Error())
// t.Fatal(err)
}
time.Sleep(20 * time.Millisecond)
err = driver.TouchMove(525, 1700)
if err != nil {
debugLog(err.Error())
// t.Fatal(err)
}
err = driver.TouchUp(625, 1700)
if err != nil {
debugLog(err.Error())
// t.Fatal(err)
}
}
}
func TestDevice_TouchDownUp(t *testing.T) {
setUp(t)
err := driver.TouchDown(200, 2000)
if err != nil {
debugLog(err.Error())
}
err = driver.TouchUp(200, 2000)
if err != nil {
debugLog(err.Error())
t.Fatal(err)
}
}
func TestDevice_TouchDownMoveUpAsync(t *testing.T) {
setUp(t)
driver.TouchDown(225, 1700)
time.Sleep(60 * time.Millisecond)
driver.TouchMoveAsync(325, 1700)
time.Sleep(60 * time.Millisecond)
driver.TouchMoveAsync(425, 1700)
time.Sleep(60 * time.Millisecond)
driver.TouchMoveAsync(525, 1700)
time.Sleep(60 * time.Millisecond)
driver.TouchUpAsync(625, 1700)
time.Sleep(4 * time.Second)
}
func TestDevice_GetDisplay(t *testing.T) {
setUp(t)
display, err := driver.GetDisplaySize()
if err != nil {
t.Fatal(err)
}
t.Log(display)
}
func TestDevice_GetRotation(t *testing.T) {
setUp(t)
rotation, err := driver.GetDisplayRotation()
if err != nil {
t.Fatal(err)
}
t.Log(rotation)
}
func TestDevice_PressRecentApp(t *testing.T) {
setUp(t)
err := driver.PressRecentApp()
if err != nil {
t.Fatal(err)
}
}
func TestDevice_PressBack(t *testing.T) {
setUp(t)
err := driver.PressBack()
if err != nil {
t.Fatal(err)
}
}
func TestDevice_PressPowerKey(t *testing.T) {
setUp(t)
err := driver.PressPowerKey()
if err != nil {
t.Fatal(err)
}
}
func TestDevice_UpVolume(t *testing.T) {
setUp(t)
err := driver.UpVolume()
if err != nil {
t.Fatal(err)
}
}
func TestDevice_DownVolume(t *testing.T) {
setUp(t)
err := driver.DownVolume()
if err != nil {
t.Fatal(err)
}
}
func TestDevice_CaptureLayout(t *testing.T) {
setUp(t)
layout, err := driver.CaptureLayout()
if err != nil {
t.Fatal(err)
}
t.Log(layout)
}
func TestDevice_InputText(t *testing.T) {
setUp(t)
err := driver.InputText("abcdef")
if err != nil {
t.Fatal(err)
}
}
func TestDevice_InjectPoint(t *testing.T) {
setUp(t)
err := driver.InjectGesture(NewGesture().Start(Point{800, 2000}).MoveTo(Point{200, 2000}, 2000))
if err != nil {
t.Fatal(err)
}
time.Sleep(2 * time.Second)
}
func TestDevice_PressKey(t *testing.T) {
setUp(t)
err := driver.PressKey(KEYCODE_NUM_1)
if err != nil {
t.Fatal(err)
}
}
func TestDevice_PressKeys(t *testing.T) {
setUp(t)
err := driver.PressKeys([]KeyCode{KEYCODE_SHIFT_LEFT, KEYCODE_NUM_1})
if err != nil {
t.Fatal(err)
}
}