From 7f6f5cb0c5be017f90896371b77b011c8c99a910 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Mon, 17 Feb 2025 22:28:19 +0800 Subject: [PATCH] fix: android tests --- internal/version/VERSION | 2 +- pkg/uixt/android_test.go | 74 +++++++++++++++++++++------------------- pkg/uixt/driver_test.go | 70 ++++++++++++++++++++----------------- 3 files changed, 78 insertions(+), 68 deletions(-) diff --git a/internal/version/VERSION b/internal/version/VERSION index faff1a51..4b59c97f 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2502172207 +v5.0.0+2502172228 diff --git a/pkg/uixt/android_test.go b/pkg/uixt/android_test.go index 723155c9..861bb330 100644 --- a/pkg/uixt/android_test.go +++ b/pkg/uixt/android_test.go @@ -14,30 +14,25 @@ import ( "github.com/httprunner/httprunner/v5/pkg/uixt/types" ) -var ( - driver IDriver - driverExt *XTDriver -) - -func setupAndroidAdbDriver(t *testing.T) { +func setupADBDriverExt(t *testing.T) *XTDriver { device, err := NewAndroidDevice() checkErr(t, err) device.Options.UIA2 = false device.Options.LogOn = false - driver, err = device.NewDriver() + driver, err := device.NewDriver() checkErr(t, err) - driverExt = NewXTDriver(driver, + return NewXTDriver(driver, ai.WithCVService(ai.CVServiceTypeVEDEM)) } -func setupAndroidUIA2Driver(t *testing.T) { +func setupUIA2DriverExt(t *testing.T) *XTDriver { device, err := NewAndroidDevice() checkErr(t, err) - device.Options.UIA2 = true + device.Options.UIA2 = true // use uiautomator2 driver device.Options.LogOn = false - driver, err = device.NewDriver() + driver, err := device.NewDriver() checkErr(t, err) - driverExt = NewXTDriver(driver, + return NewXTDriver(driver, ai.WithCVService(ai.CVServiceTypeVEDEM)) } @@ -58,12 +53,14 @@ func TestAndroidDevice_GetCurrentWindow(t *testing.T) { } func TestDriver_Quit(t *testing.T) { + driver := setupADBDriverExt(t) if err := driver.DeleteSession(); err != nil { t.Fatal(err) } } func TestDriver_Status(t *testing.T) { + driver := setupADBDriverExt(t) _, err := driver.Status() if err != nil { t.Fatal(err) @@ -71,6 +68,7 @@ func TestDriver_Status(t *testing.T) { } func TestDriver_Screenshot(t *testing.T) { + driver := setupADBDriverExt(t) screenshot, err := driver.ScreenShot() if err != nil { t.Fatal(err) @@ -80,6 +78,7 @@ func TestDriver_Screenshot(t *testing.T) { } func TestDriver_Rotation(t *testing.T) { + driver := setupADBDriverExt(t) rotation, err := driver.Rotation() if err != nil { t.Fatal(err) @@ -89,6 +88,7 @@ func TestDriver_Rotation(t *testing.T) { } func TestDriver_DeviceSize(t *testing.T) { + driver := setupADBDriverExt(t) deviceSize, err := driver.WindowSize() if err != nil { t.Fatal(err) @@ -98,9 +98,9 @@ func TestDriver_DeviceSize(t *testing.T) { } func TestDriver_Source(t *testing.T) { - setupAndroidUIA2Driver(t) + driver := setupUIA2DriverExt(t) - source, err := driverExt.Source() + source, err := driver.Source() if err != nil { t.Fatal(err) } @@ -109,6 +109,7 @@ func TestDriver_Source(t *testing.T) { } func TestDriver_BatteryInfo(t *testing.T) { + driver := setupADBDriverExt(t) batteryInfo, err := driver.BatteryInfo() if err != nil { t.Fatal(err) @@ -118,6 +119,7 @@ func TestDriver_BatteryInfo(t *testing.T) { } func TestDriver_DeviceInfo(t *testing.T) { + driver := setupADBDriverExt(t) devInfo, err := driver.DeviceInfo() if err != nil { t.Fatal(err) @@ -129,9 +131,9 @@ func TestDriver_DeviceInfo(t *testing.T) { } func TestDriver_Tap(t *testing.T) { - setupAndroidUIA2Driver(t) - driverExt.StartCaptureLog("") - err := driverExt.TapXY(0.5, 0.5, + driver := setupUIA2DriverExt(t) + driver.StartCaptureLog("") + err := driver.TapXY(0.5, 0.5, option.WithIdentifier("test"), option.WithPressDuration(4)) if err != nil { @@ -149,8 +151,8 @@ func TestDriver_Tap(t *testing.T) { } func TestDriver_Swipe(t *testing.T) { - setupAndroidUIA2Driver(t) - err := driverExt.Swipe(400, 1000, 400, 500, + driver := setupUIA2DriverExt(t) + err := driver.Swipe(400, 1000, 400, 500, option.WithPressDuration(0.5)) if err != nil { t.Fatal(err) @@ -158,14 +160,15 @@ func TestDriver_Swipe(t *testing.T) { } func TestDriver_Swipe_Relative(t *testing.T) { - setupAndroidUIA2Driver(t) - err := driverExt.Swipe(0.5, 0.7, 0.5, 0.5) + driver := setupUIA2DriverExt(t) + err := driver.Swipe(0.5, 0.7, 0.5, 0.5) if err != nil { t.Fatal(err) } } func TestDriver_Drag(t *testing.T) { + driver := setupUIA2DriverExt(t) err := driver.Drag(400, 260, 400, 500) if err != nil { t.Fatal(err) @@ -180,9 +183,9 @@ func TestDriver_Drag(t *testing.T) { } func TestDriver_SendKeys(t *testing.T) { - setupAndroidUIA2Driver(t) + driver := setupUIA2DriverExt(t) - err := driverExt.Input("辽宁省沈阳市新民市民族街36-4", + err := driver.Input("辽宁省沈阳市新民市民族街36-4", option.WithIdentifier("test")) if err != nil { t.Fatal(err) @@ -204,6 +207,7 @@ func TestDriver_SendKeys(t *testing.T) { } func TestDriver_PressBack(t *testing.T) { + driver := setupADBDriverExt(t) err := driver.Back() if err != nil { t.Fatal(err) @@ -211,6 +215,7 @@ func TestDriver_PressBack(t *testing.T) { } func TestDriver_SetRotation(t *testing.T) { + driver := setupADBDriverExt(t) // err = driver.SetRotation(Rotation{Z: 0}) err := driver.SetRotation(types.Rotation{Z: 270}) if err != nil { @@ -219,11 +224,11 @@ func TestDriver_SetRotation(t *testing.T) { } func TestDriver_GetOrientation(t *testing.T) { - setupAndroidUIA2Driver(t) - _, _ = driverExt.AppTerminate("com.quark.browser") - _ = driverExt.AppLaunch("com.quark.browser") + driver := setupUIA2DriverExt(t) + _, _ = driver.AppTerminate("com.quark.browser") + _ = driver.AppLaunch("com.quark.browser") time.Sleep(2 * time.Second) - _ = driverExt.Home() + _ = driver.Home() } func Test_getFreePort(t *testing.T) { @@ -255,13 +260,13 @@ func TestDriver_AppLaunch(t *testing.T) { } func TestDriver_IsAppInForeground(t *testing.T) { - setupAndroidUIA2Driver(t) + driver := setupUIA2DriverExt(t) // setupAndroidAdbDriver(t) - err := driverExt.AppLaunch("com.android.settings") + err := driver.AppLaunch("com.android.settings") checkErr(t, err) - app, err := driverExt.ForegroundInfo() + app, err := driver.ForegroundInfo() checkErr(t, err) if app.PackageName != "com.android.settings" { t.FailNow() @@ -339,8 +344,8 @@ func TestDriver_ShellInputUnicode(t *testing.T) { } func TestRecordVideo(t *testing.T) { - setupAndroidAdbDriver(t) - path, err := driverExt.ScreenRecord(5 * time.Second) + driver := setupADBDriverExt(t) + path, err := driver.ScreenRecord(5 * time.Second) if err != nil { t.Fatal(err) } @@ -348,9 +353,8 @@ func TestRecordVideo(t *testing.T) { } func Test_Android_Backspace(t *testing.T) { - setupAndroidAdbDriver(t) - - err := driverExt.Backspace(1) + driver := setupADBDriverExt(t) + err := driver.Backspace(1) if err != nil { t.Fatal(err) } diff --git a/pkg/uixt/driver_test.go b/pkg/uixt/driver_test.go index 017ae4ca..2d83f39e 100644 --- a/pkg/uixt/driver_test.go +++ b/pkg/uixt/driver_test.go @@ -63,54 +63,61 @@ func TestDriverExt(t *testing.T) { androidDevice.InstallAPK("/path/to/app.apk") } -var ( - iosDevice *IOSDevice - iosDriverExt *XTDriver -) - -// func init() { -// iosDevice, _ = NewIOSDevice() -// driver, _ := iosDevice.NewDriver() -// iosDriverExt = NewXTDriver(driver, -// ai.WithCVService(ai.CVServiceTypeVEDEM)) -// } +func setupDriverExt(t *testing.T, driverType ...string) *XTDriver { + var dType string + if len(driverType) > 0 { + dType = driverType[0] + } + switch dType { + case "ADB": + return setupADBDriverExt(t) + case "UIA2": + return setupUIA2DriverExt(t) + case "WDA": + return setupWDADriverExt(t) + case "HDC": + return setupHDCDriverExt(t) + default: + return setupADBDriverExt(t) + } +} func TestDriverExt_TapXY(t *testing.T) { - err := iosDriverExt.TapXY(0.4, 0.5) + driver := setupDriverExt(t) + err := driver.TapXY(0.4, 0.5) checkErr(t, err) } func TestDriverExt_TapAbsXY(t *testing.T) { - err := iosDriverExt.TapAbsXY(100, 300) + driver := setupDriverExt(t) + err := driver.TapAbsXY(100, 300) checkErr(t, err) } func TestAndroidSwipeAction(t *testing.T) { - setupAndroidAdbDriver(t) + driver := setupDriverExt(t) - swipeAction := prepareSwipeAction(driverExt, "up", option.WithDirection("down")) - err := swipeAction(driverExt) + swipeAction := prepareSwipeAction(driver, "up", option.WithDirection("down")) + err := swipeAction(driver) checkErr(t, err) - swipeAction = prepareSwipeAction(driverExt, "up", option.WithCustomDirection(0.5, 0.5, 0.5, 0.9)) - err = swipeAction(driverExt) + swipeAction = prepareSwipeAction(driver, "up", option.WithCustomDirection(0.5, 0.5, 0.5, 0.9)) + err = swipeAction(driver) checkErr(t, err) } func TestAndroidSwipeToTapApp(t *testing.T) { - setupAndroidAdbDriver(t) - - err := driverExt.SwipeToTapApp("抖音") + driver := setupDriverExt(t) + err := driver.SwipeToTapApp("抖音") checkErr(t, err) } func TestAndroidSwipeToTapTexts(t *testing.T) { - setupAndroidAdbDriver(t) - - err := driverExt.AppLaunch("com.ss.android.ugc.aweme") + driver := setupDriverExt(t) + err := driver.AppLaunch("com.ss.android.ugc.aweme") checkErr(t, err) - err = driverExt.swipeToTapTexts([]string{"点击进入直播间", "直播中"}, option.WithDirection("up")) + err = driver.swipeToTapTexts([]string{"点击进入直播间", "直播中"}, option.WithDirection("up")) checkErr(t, err) } @@ -155,10 +162,10 @@ func TestSleepStrict(t *testing.T) { } func TestGetScreenShot(t *testing.T) { - setupAndroidAdbDriver(t) + driver := setupADBDriverExt(t) imagePath := filepath.Join(config.ScreenShotsPath, "test_screenshot") - _, err := driverExt.ScreenShot(option.WithScreenShotFileName(imagePath)) + _, err := driver.ScreenShot(option.WithScreenShotFileName(imagePath)) if err != nil { t.Fatalf("GetScreenShot failed: %v", err) } @@ -167,8 +174,8 @@ func TestGetScreenShot(t *testing.T) { } func TestCheckPopup(t *testing.T) { - setupAndroidAdbDriver(t) - popup, err := driverExt.CheckPopup() + driver := setupADBDriverExt(t) + popup, err := driver.CheckPopup() if err != nil { t.Logf("check popup failed, err: %v", err) } else if popup == nil { @@ -179,9 +186,8 @@ func TestCheckPopup(t *testing.T) { } func TestClosePopup(t *testing.T) { - setupAndroidAdbDriver(t) - - if err := driverExt.ClosePopupsHandler(); err != nil { + driver := setupADBDriverExt(t) + if err := driver.ClosePopupsHandler(); err != nil { t.Fatal(err) } }