mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
275 lines
4.9 KiB
Go
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)
|
|
}
|
|
}
|