fix: android tests

This commit is contained in:
lilong.129
2025-02-17 22:28:19 +08:00
parent b6291eab44
commit 7f6f5cb0c5
3 changed files with 78 additions and 68 deletions

View File

@@ -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)
}

View File

@@ -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)
}
}