diff --git a/cmd/ios/reboot.go b/cmd/ios/reboot.go index c70a3a19..10a7353d 100644 --- a/cmd/ios/reboot.go +++ b/cmd/ios/reboot.go @@ -33,7 +33,7 @@ var rebootCmd = &cobra.Command{ if err != nil { return err } - fmt.Printf("reboot %s success\n", device.UDID) + fmt.Printf("reboot %s success\n", device.Options.UDID) return nil }, } diff --git a/config.go b/config.go index f360a82a..c32ee5f1 100644 --- a/config.go +++ b/config.go @@ -121,7 +121,7 @@ func (c *TConfig) SetWebSocket(times, interval, timeout, size int64) *TConfig { func (c *TConfig) SetIOS(opts ...option.IOSDeviceOption) *TConfig { iosOptions := option.NewIOSDeviceOptions(opts...) device := &uixt.IOSDevice{ - IOSDeviceOptions: iosOptions, + Options: iosOptions, } // each device can have its own settings @@ -142,7 +142,7 @@ func (c *TConfig) SetIOS(opts ...option.IOSDeviceOption) *TConfig { func (c *TConfig) SetHarmony(opts ...option.HarmonyDeviceOption) *TConfig { harmonyOptions := option.NewHarmonyDeviceOptions(opts...) device := &uixt.HarmonyDevice{ - HarmonyDeviceOptions: harmonyOptions, + Options: harmonyOptions, } // each device can have its own settings @@ -163,7 +163,7 @@ func (c *TConfig) SetHarmony(opts ...option.HarmonyDeviceOption) *TConfig { func (c *TConfig) SetAndroid(opts ...option.AndroidDeviceOption) *TConfig { uiaOptions := option.NewAndroidDeviceOptions(opts...) device := &uixt.AndroidDevice{ - AndroidDeviceOptions: uiaOptions, + Options: uiaOptions, } // each device can have its own settings diff --git a/internal/version/VERSION b/internal/version/VERSION index c0a54555..d6f35cce 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2502101959 +v5.0.0+2502102045 diff --git a/pkg/uixt/android_device.go b/pkg/uixt/android_device.go index 13e80f12..21a9731e 100644 --- a/pkg/uixt/android_device.go +++ b/pkg/uixt/android_device.go @@ -80,45 +80,45 @@ func NewAndroidDevice(opts ...option.AndroidDeviceOption) (device *AndroidDevice } device = &AndroidDevice{ - Device: gadbDevice, - AndroidDeviceOptions: androidOptions, - Logcat: NewAdbLogcat(androidOptions.SerialNumber), + Device: gadbDevice, + Options: androidOptions, + Logcat: NewAdbLogcat(androidOptions.SerialNumber), } - log.Info().Str("serial", device.SerialNumber).Msg("init android device") + log.Info().Str("serial", device.Options.SerialNumber).Msg("init android device") return device, nil } type AndroidDevice struct { *gadb.Device - *option.AndroidDeviceOptions - Logcat *AdbLogcat + Options *option.AndroidDeviceOptions + Logcat *AdbLogcat } func (dev *AndroidDevice) Setup() error { - dev.RunShellCommand("ime", "enable", option.UnicodeImePackageName) - dev.RunShellCommand("rm", "-r", config.DeviceActionLogFilePath) + dev.Device.RunShellCommand("ime", "enable", option.UnicodeImePackageName) + dev.Device.RunShellCommand("rm", "-r", config.DeviceActionLogFilePath) // setup evalite evalToolRaw, err := evalite.ReadFile("evalite") if err != nil { return errors.Wrap(code.LoadFileError, err.Error()) } - err = dev.Push(bytes.NewReader(evalToolRaw), "/data/local/tmp/evalite", time.Now()) + err = dev.Device.Push(bytes.NewReader(evalToolRaw), "/data/local/tmp/evalite", time.Now()) if err != nil { return errors.Wrap(code.DeviceShellExecError, err.Error()) } - if dev.UIA2 { + if dev.Options.UIA2 { // uiautomator2 server must be started before // check uiautomator server package installed - if !dev.IsPackageInstalled(dev.UIA2ServerPackageName) { + if !dev.Device.IsPackageInstalled(dev.Options.UIA2ServerPackageName) { return errors.Wrapf(code.MobileUIDriverAppNotInstalled, - "%s not installed", dev.UIA2ServerPackageName) + "%s not installed", dev.Options.UIA2ServerPackageName) } - if !dev.IsPackageInstalled(dev.UIA2ServerTestPackageName) { + if !dev.Device.IsPackageInstalled(dev.Options.UIA2ServerTestPackageName) { return errors.Wrapf(code.MobileUIDriverAppNotInstalled, - "%s not installed", dev.UIA2ServerTestPackageName) + "%s not installed", dev.Options.UIA2ServerTestPackageName) } // TODO: check uiautomator server package running @@ -142,16 +142,16 @@ func (dev *AndroidDevice) Teardown() error { } func (dev *AndroidDevice) UUID() string { - return dev.SerialNumber + return dev.Options.SerialNumber } func (dev *AndroidDevice) LogEnabled() bool { - return dev.LogOn + return dev.Options.LogOn } func (dev *AndroidDevice) NewDriver() (driverExt IDriverExt, err error) { var driver IDriver - if dev.UIA2 || dev.LogOn { + if dev.Options.UIA2 || dev.Options.LogOn { driver, err = NewUIA2Driver(dev) } else { driver, err = NewADBDriver(dev) @@ -160,7 +160,7 @@ func (dev *AndroidDevice) NewDriver() (driverExt IDriverExt, err error) { return nil, errors.Wrap(err, "failed to init UIA driver") } - if dev.LogOn { + if dev.Options.LogOn { err = driver.StartCaptureLog("hrp_adb_log") if err != nil { return nil, err @@ -200,7 +200,7 @@ func (dev *AndroidDevice) StopPcap() string { func (dev *AndroidDevice) Install(apkPath string, opts ...option.InstallOption) error { installOpts := option.NewInstallOptions(opts...) - brand, err := dev.Brand() + brand, err := dev.Device.Brand() if err != nil { return err } @@ -218,7 +218,7 @@ func (dev *AndroidDevice) Install(apkPath string, opts ...option.InstallOption) case "vivo": return dev.installVivoSilent(apkPath, args...) case "oppo", "realme", "oneplus": - if dev.IsPackageInstalled(EvalInstallerPackageName) { + if dev.Device.IsPackageInstalled(EvalInstallerPackageName) { return dev.installViaInstaller(apkPath, args...) } log.Warn().Msg("oppo not install eval installer") @@ -236,13 +236,13 @@ func (dev *AndroidDevice) installVivoSilent(apkPath string, args ...string) erro verifyCode = verifyCode[:8] verifyCode = "-V" + verifyCode args = append([]string{verifyCode}, args...) - _, err := dev.InstallAPK(apkPath, args...) + _, err := dev.Device.InstallAPK(apkPath, args...) return err } func (dev *AndroidDevice) installViaInstaller(apkPath string, args ...string) error { appRemotePath := "/data/local/tmp/" + strconv.FormatInt(time.Now().UnixMilli(), 10) + ".apk" - err := dev.PushFile(apkPath, appRemotePath, time.Now()) + err := dev.Device.PushFile(apkPath, appRemotePath, time.Now()) if err != nil { return err } @@ -250,7 +250,7 @@ func (dev *AndroidDevice) installViaInstaller(apkPath string, args ...string) er defer func() { close(done) }() - logcat := NewAdbLogcatWithCallback(dev.Serial(), func(line string) { + logcat := NewAdbLogcatWithCallback(dev.Device.Serial(), func(line string) { re := regexp.MustCompile(`\{.*?}`) match := re.FindString(line) if match == "" { @@ -280,7 +280,7 @@ func (dev *AndroidDevice) installViaInstaller(apkPath string, args ...string) er // 需要监听是否完成安装 command := strings.Split(InstallViaInstallerCommand, " ") args = append(command, appRemotePath) - _, err = dev.RunShellCommand("am", args[1:]...) + _, err = dev.Device.RunShellCommand("am", args[1:]...) if err != nil { return err } @@ -295,18 +295,18 @@ func (dev *AndroidDevice) installViaInstaller(apkPath string, args ...string) er } func (dev *AndroidDevice) installCommon(apkPath string, args ...string) error { - _, err := dev.InstallAPK(apkPath, args...) + _, err := dev.Device.InstallAPK(apkPath, args...) return err } func (dev *AndroidDevice) Uninstall(packageName string) error { - _, err := dev.RunShellCommand("uninstall", packageName) + _, err := dev.Device.RunShellCommand("uninstall", packageName) return err } func (dev *AndroidDevice) GetCurrentWindow() (windowInfo types.WindowInfo, err error) { // adb shell dumpsys window | grep -E 'mCurrentFocus|mFocusedApp' - output, err := dev.RunShellCommand("dumpsys", "window", "|", "grep", "-E", "'mCurrentFocus|mFocusedApp'") + output, err := dev.Device.RunShellCommand("dumpsys", "window", "|", "grep", "-E", "'mCurrentFocus|mFocusedApp'") if err != nil { return types.WindowInfo{}, errors.Wrap(err, "get current window failed") } @@ -332,7 +332,7 @@ func (dev *AndroidDevice) GetCurrentWindow() (windowInfo types.WindowInfo, err e } // adb shell dumpsys activity activities | grep mResumedActivity - output, err = dev.RunShellCommand("dumpsys", "activity", "activities", "|", "grep", "mResumedActivity") + output, err = dev.Device.RunShellCommand("dumpsys", "activity", "activities", "|", "grep", "mResumedActivity") if err != nil { return types.WindowInfo{}, errors.Wrap(err, "get current activity failed") } @@ -386,7 +386,7 @@ func (dev *AndroidDevice) GetPackageInfo(packageName string) (types.AppInfo, err } func (dev *AndroidDevice) getPackageVersion(packageName string) (string, error) { - output, err := dev.RunShellCommand("dumpsys", "package", packageName, "|", "grep", "versionName") + output, err := dev.Device.RunShellCommand("dumpsys", "package", packageName, "|", "grep", "versionName") if err != nil { return "", errors.Wrap(err, "get package version failed") } @@ -401,7 +401,7 @@ func (dev *AndroidDevice) getPackageVersion(packageName string) (string, error) } func (dev *AndroidDevice) getPackagePath(packageName string) (string, error) { - output, err := dev.RunShellCommand("pm", "path", packageName) + output, err := dev.Device.RunShellCommand("pm", "path", packageName) if err != nil { return "", errors.Wrap(err, "get package path failed") } @@ -414,7 +414,7 @@ func (dev *AndroidDevice) getPackagePath(packageName string) (string, error) { } func (dev *AndroidDevice) getPackageMD5(packagePath string) (string, error) { - output, err := dev.RunShellCommand("md5sum", packagePath) + output, err := dev.Device.RunShellCommand("md5sum", packagePath) if err != nil { return "", errors.Wrap(err, "get package md5 failed") } @@ -428,12 +428,13 @@ func (dev *AndroidDevice) getPackageMD5(packagePath string) (string, error) { func (dev *AndroidDevice) startUIA2Server() error { const maxRetries = 3 for attempt := 1; attempt <= maxRetries; attempt++ { - log.Info().Str("package", dev.UIA2ServerTestPackageName). + log.Info().Str("package", dev.Options.UIA2ServerTestPackageName). Int("attempt", attempt).Msg("start uiautomator server") // $ adb shell am instrument -w $UIA2ServerTestPackageName // -w: wait for instrumentation to finish before returning. // Required for test runners. - out, err := dev.RunShellCommand("am", "instrument", "-w", dev.UIA2ServerTestPackageName) + out, err := dev.Device.RunShellCommand("am", "instrument", "-w", + dev.Options.UIA2ServerTestPackageName) if err != nil { return errors.Wrap(err, "start uiautomator server failed") } @@ -447,7 +448,7 @@ func (dev *AndroidDevice) startUIA2Server() error { } func (dev *AndroidDevice) stopUIA2Server() error { - _, err := dev.RunShellCommand("am", "force-stop", dev.UIA2ServerPackageName) + _, err := dev.Device.RunShellCommand("am", "force-stop", dev.Options.UIA2ServerPackageName) return err } diff --git a/pkg/uixt/android_driver_uia2.go b/pkg/uixt/android_driver_uia2.go index 1ac4e966..3904711a 100644 --- a/pkg/uixt/android_driver_uia2.go +++ b/pkg/uixt/android_driver_uia2.go @@ -21,18 +21,21 @@ import ( func NewUIA2Driver(device *AndroidDevice) (*UIA2Driver, error) { log.Info().Interface("device", device).Msg("init android UIA2 driver") - localPort, err := device.Forward(device.UIA2Port) + localPort, err := device.Device.Forward(device.Options.UIA2Port) if err != nil { return nil, errors.Wrap(code.DeviceConnectionError, fmt.Sprintf("forward port %d->%d failed: %v", - localPort, device.UIA2Port, err)) + localPort, device.Options.UIA2Port, err)) + } + driver := &UIA2Driver{ + ADBDriver: &ADBDriver{ + AndroidDevice: device, + }, } - driver := new(UIA2Driver) err = driver.Session.InitConnection(localPort) if err != nil { return nil, err } - driver.Device = device.Device driver.Logcat = device.Logcat err = driver.InitSession(nil) diff --git a/pkg/uixt/android_test.go b/pkg/uixt/android_test.go index 1649dec8..fe976520 100644 --- a/pkg/uixt/android_test.go +++ b/pkg/uixt/android_test.go @@ -18,8 +18,8 @@ var driverExt IDriverExt func setupAndroidAdbDriver(t *testing.T) { device, err := NewAndroidDevice() checkErr(t, err) - device.UIA2 = false - device.LogOn = false + device.Options.UIA2 = false + device.Options.LogOn = false driverExt, err = device.NewDriver() checkErr(t, err) } @@ -27,8 +27,8 @@ func setupAndroidAdbDriver(t *testing.T) { func setupAndroidUIA2Driver(t *testing.T) { device, err := NewAndroidDevice() checkErr(t, err) - device.UIA2 = true - device.LogOn = false + device.Options.UIA2 = true + device.Options.LogOn = false driverExt, err = device.NewDriver() checkErr(t, err) } diff --git a/pkg/uixt/driver_ext/shoots_android_dirver.go b/pkg/uixt/driver_ext/shoots_android_driver.go similarity index 98% rename from pkg/uixt/driver_ext/shoots_android_dirver.go rename to pkg/uixt/driver_ext/shoots_android_driver.go index 164e91db..370aa588 100644 --- a/pkg/uixt/driver_ext/shoots_android_dirver.go +++ b/pkg/uixt/driver_ext/shoots_android_driver.go @@ -22,7 +22,7 @@ const ( ) func NewShootsAndroidDriver(device *uixt.AndroidDevice) (driver *ShootsAndroidDriver, err error) { - socketLocalPort, err := device.Forward(shootsSocketName) + socketLocalPort, err := device.Device.Forward(shootsSocketName) if err != nil { return nil, errors.Wrap(code.DeviceConnectionError, fmt.Sprintf("forward port %d->%s failed: %v", @@ -40,7 +40,7 @@ func NewShootsAndroidDriver(device *uixt.AndroidDevice) (driver *ShootsAndroidDr } driver.InitSession(nil) - serverLocalPort, err := device.Forward(douyinServerPort) + serverLocalPort, err := device.Device.Forward(douyinServerPort) if err != nil { return nil, errors.Wrap(code.DeviceConnectionError, fmt.Sprintf("forward port %d->%d failed: %v", diff --git a/pkg/uixt/harmony_device.go b/pkg/uixt/harmony_device.go index 65224a87..d7f64d84 100644 --- a/pkg/uixt/harmony_device.go +++ b/pkg/uixt/harmony_device.go @@ -13,7 +13,7 @@ import ( type HarmonyDevice struct { *ghdc.Device - *option.HarmonyDeviceOptions + Options *option.HarmonyDeviceOptions } func NewHarmonyDevice(opts ...option.HarmonyDeviceOption) (device *HarmonyDevice, err error) { @@ -58,10 +58,10 @@ func NewHarmonyDevice(opts ...option.HarmonyDeviceOption) (device *HarmonyDevice } device = &HarmonyDevice{ - HarmonyDeviceOptions: deviceConfig, - Device: harmonyDevice, + Options: deviceConfig, + Device: harmonyDevice, } - log.Info().Str("connectKey", device.ConnectKey).Msg("init harmony device") + log.Info().Str("connectKey", device.Options.ConnectKey).Msg("init harmony device") return device, nil } @@ -74,11 +74,11 @@ func (dev *HarmonyDevice) Teardown() error { } func (dev *HarmonyDevice) UUID() string { - return dev.ConnectKey + return dev.Options.ConnectKey } func (dev *HarmonyDevice) LogEnabled() bool { - return dev.LogOn + return dev.Options.LogOn } func (dev *HarmonyDevice) Install(appPath string, opts ...option.InstallOption) error { diff --git a/pkg/uixt/harmony_driver_hdc.go b/pkg/uixt/harmony_driver_hdc.go index cae70cb3..69ce769a 100644 --- a/pkg/uixt/harmony_driver_hdc.go +++ b/pkg/uixt/harmony_driver_hdc.go @@ -18,7 +18,6 @@ import ( type HDCDriver struct { *HarmonyDevice *Session - IDriver *DriverExt points []ExportPoint uiDriver *ghdc.UIDriver diff --git a/pkg/uixt/ios_device.go b/pkg/uixt/ios_device.go index 4c93c9a2..0c90cc0b 100644 --- a/pkg/uixt/ios_device.go +++ b/pkg/uixt/ios_device.go @@ -127,11 +127,11 @@ func NewIOSDevice(opts ...option.IOSDeviceOption) (device *IOSDevice, err error) } device = &IOSDevice{ - IOSDeviceOptions: deviceOptions, - listeners: make(map[int]*forward.ConnListener), - d: dev, + DeviceEntry: dev, + Options: deviceOptions, + listeners: make(map[int]*forward.ConnListener), } - log.Info().Str("udid", device.UDID).Msg("init ios device") + log.Info().Str("udid", device.Options.UDID).Msg("init ios device") err = device.Setup() if err != nil { _ = device.Teardown() @@ -141,8 +141,8 @@ func NewIOSDevice(opts ...option.IOSDeviceOption) (device *IOSDevice, err error) } type IOSDevice struct { - *option.IOSDeviceOptions - d ios.DeviceEntry + ios.DeviceEntry + Options *option.IOSDeviceOptions listeners map[int]*forward.ConnListener } @@ -202,11 +202,11 @@ func (dev *IOSDevice) Teardown() error { } func (dev *IOSDevice) UUID() string { - return dev.UDID + return dev.Options.UDID } func (dev *IOSDevice) LogEnabled() bool { - return dev.LogOn + return dev.Options.LogOn } func (dev *IOSDevice) getAppInfo(packageName string) (appInfo types.AppInfo, err error) { @@ -233,22 +233,22 @@ func (dev *IOSDevice) NewDriver() (driverExt IDriverExt, err error) { return nil, errors.Wrap(err, "failed to init WDA driver") } settings, err := driver.SetAppiumSettings(map[string]interface{}{ - "snapshotMaxDepth": dev.SnapshotMaxDepth, - "acceptAlertButtonSelector": dev.AcceptAlertButtonSelector, + "snapshotMaxDepth": dev.Options.SnapshotMaxDepth, + "acceptAlertButtonSelector": dev.Options.AcceptAlertButtonSelector, }) if err != nil { return nil, errors.Wrap(err, "failed to set appium WDA settings") } log.Info().Interface("appiumWDASettings", settings).Msg("set appium WDA settings") - if dev.ResetHomeOnStartup { + if dev.Options.ResetHomeOnStartup { log.Info().Msg("go back to home screen") if err = driver.Homescreen(); err != nil { return nil, errors.Wrap(code.MobileUIDriverError, fmt.Sprintf("go back to home screen failed: %v", err)) } } - if dev.LogOn { + if dev.Options.LogOn { err = driver.StartCaptureLog("hrp_wda_log") if err != nil { return nil, err @@ -272,7 +272,7 @@ func (dev *IOSDevice) Install(appPath string, opts ...option.InstallOption) (err installOpts := option.NewInstallOptions(opts...) for i := 0; i <= installOpts.RetryTimes; i++ { var conn *zipconduit.Connection - conn, err = zipconduit.New(dev.d) + conn, err = zipconduit.New(dev.DeviceEntry) if err != nil { return err } @@ -289,7 +289,7 @@ func (dev *IOSDevice) Install(appPath string, opts ...option.InstallOption) (err } func (dev *IOSDevice) Uninstall(bundleId string) error { - svc, err := installationproxy.New(dev.d) + svc, err := installationproxy.New(dev.DeviceEntry) if err != nil { return err } @@ -306,7 +306,7 @@ func (dev *IOSDevice) Forward(localPort, remotePort int) error { log.Warn().Msg(fmt.Sprintf("local port :%d is already in use", localPort)) _ = dev.listeners[localPort].Close() } - listener, err := forward.Forward(dev.d, uint16(localPort), uint16(remotePort)) + listener, err := forward.Forward(dev.DeviceEntry, uint16(localPort), uint16(remotePort)) if err != nil { log.Error().Err(err).Msg(fmt.Sprintf("failed to forward %d to %d", localPort, remotePort)) return err @@ -316,7 +316,7 @@ func (dev *IOSDevice) Forward(localPort, remotePort int) error { } func (dev *IOSDevice) GetDeviceInfo() (*DeviceDetail, error) { - deviceInfo, err := deviceinfo.NewDeviceInfo(dev.d) + deviceInfo, err := deviceinfo.NewDeviceInfo(dev.DeviceEntry) if err != nil { log.Error().Err(err).Msg("failed to get device info") return nil, err @@ -343,7 +343,7 @@ func (dev *IOSDevice) GetDeviceInfo() (*DeviceDetail, error) { } func (dev *IOSDevice) ListApps(appType ApplicationType) (apps []installationproxy.AppInfo, err error) { - svc, _ := installationproxy.New(dev.d) + svc, _ := installationproxy.New(dev.DeviceEntry) defer svc.Close() switch appType { case ApplicationTypeSystem: @@ -363,7 +363,7 @@ func (dev *IOSDevice) ListApps(appType ApplicationType) (apps []installationprox } func (dev *IOSDevice) GetAppInfo(packageName string) (appInfo installationproxy.AppInfo, err error) { - svc, _ := installationproxy.New(dev.d) + svc, _ := installationproxy.New(dev.DeviceEntry) defer svc.Close() apps, err := svc.BrowseAllApps() if err != nil { @@ -379,7 +379,7 @@ func (dev *IOSDevice) GetAppInfo(packageName string) (appInfo installationproxy. } func (dev *IOSDevice) ListImages() (images []string, err error) { - conn, err := imagemounter.NewImageMounter(dev.d) + conn, err := imagemounter.NewImageMounter(dev.DeviceEntry) if err != nil { return nil, errors.Wrap(code.DeviceConnectionError, err.Error()) } @@ -397,7 +397,7 @@ func (dev *IOSDevice) ListImages() (images []string, err error) { func (dev *IOSDevice) MountImage(imagePath string) (err error) { log.Info().Str("imagePath", imagePath).Msg("mount ios developer image") - conn, err := imagemounter.NewImageMounter(dev.d) + conn, err := imagemounter.NewImageMounter(dev.DeviceEntry) if err != nil { return errors.Wrap(code.DeviceConnectionError, err.Error()) } @@ -414,7 +414,7 @@ func (dev *IOSDevice) MountImage(imagePath string) (err error) { func (dev *IOSDevice) AutoMountImage(baseDir string) (err error) { log.Info().Str("baseDir", baseDir).Msg("auto mount ios developer image") - imagePath, err := imagemounter.DownloadImageFor(dev.d, baseDir) + imagePath, err := imagemounter.DownloadImageFor(dev.DeviceEntry, baseDir) if err != nil { return errors.Wrapf(code.DeviceConnectionError, "download ios developer image failed: %v", err) @@ -432,7 +432,7 @@ func (dev *IOSDevice) RunXCTest(ctx context.Context, bundleID, testRunnerBundleI BundleId: bundleID, TestRunnerBundleId: testRunnerBundleID, XctestConfigName: xctestConfig, - Device: dev.d, + Device: dev.DeviceEntry, Listener: listener, } _, err = testmanagerd.RunTestWithConfig(ctx, config) @@ -455,7 +455,7 @@ func (dev *IOSDevice) RunXCTestDaemon(ctx context.Context, bundleID, testRunnerB } func (dev *IOSDevice) getVersion() (version *semver.Version, err error) { - version, err = ios.GetProductVersion(dev.d) + version, err = ios.GetProductVersion(dev.DeviceEntry) if err != nil { log.Error().Err(err).Msg("failed to get version") return nil, err @@ -465,7 +465,7 @@ func (dev *IOSDevice) getVersion() (version *semver.Version, err error) { } func (dev *IOSDevice) ListProcess(applicationsOnly bool) (processList []instruments.ProcessInfo, err error) { - service, err := instruments.NewDeviceInfoService(dev.d) + service, err := instruments.NewDeviceInfoService(dev.DeviceEntry) if err != nil { log.Error().Err(err).Msg("failed to list process") return @@ -485,7 +485,7 @@ func (dev *IOSDevice) ListProcess(applicationsOnly bool) (processList []instrume } func (dev *IOSDevice) Reboot() error { - err := diagnostics.Reboot(dev.d) + err := diagnostics.Reboot(dev.DeviceEntry) if err != nil { log.Error().Err(err).Msg("failed to reboot device") return err @@ -503,7 +503,7 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities option.Capabilities) (driver ID return nil, errors.Wrap(code.DeviceHTTPDriverError, fmt.Sprintf("get free port failed: %v", err)) } - if err = dev.Forward(localPort, dev.WDAPort); err != nil { + if err = dev.Forward(localPort, dev.Options.WDAPort); err != nil { return nil, errors.Wrap(code.DeviceHTTPDriverError, fmt.Sprintf("forward tcp port failed: %v", err)) } @@ -519,7 +519,7 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities option.Capabilities) (driver ID return nil, errors.Wrap(code.DeviceHTTPDriverError, fmt.Sprintf("get free port failed: %v", err)) } - if err = dev.Forward(localMjpegPort, dev.WDAMjpegPort); err != nil { + if err = dev.Forward(localMjpegPort, dev.Options.WDAMjpegPort); err != nil { return nil, errors.Wrap(code.DeviceHTTPDriverError, fmt.Sprintf("forward tcp port failed: %v", err)) } @@ -534,7 +534,7 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities option.Capabilities) (driver ID wd := new(WDADriver) wd.IOSDevice = dev - wd.udid = dev.UDID + wd.udid = dev.Options.UDID wd.client = &http.Client{ Timeout: time.Second * 10, // 设置超时时间为 10 秒 } @@ -566,7 +566,7 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities option.Capabilities) (driver ID } func (dev *IOSDevice) GetPackageInfo(packageName string) (types.AppInfo, error) { - svc, err := installationproxy.New(dev.d) + svc, err := installationproxy.New(dev.DeviceEntry) if err != nil { return types.AppInfo{}, errors.Wrap(code.DeviceGetInfoError, err.Error()) } diff --git a/runner.go b/runner.go index bee5c3f9..e499baea 100644 --- a/runner.go +++ b/runner.go @@ -423,7 +423,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { return nil, errors.Wrap(code.InvalidCaseError, fmt.Sprintf("parse android config failed: %v", err)) } - device, err := uixt.NewAndroidDevice(androidDevice.Options()...) + device, err := uixt.NewAndroidDevice(androidDevice.Options.Options()...) if err != nil { return nil, errors.Wrap(err, "init android device failed") } @@ -435,7 +435,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { return nil, errors.Wrap(err, "init android driver failed") } - r.uixtDrivers[androidDevice.SerialNumber] = driverExt + r.uixtDrivers[androidDevice.Options.SerialNumber] = driverExt } // parse iOS devices config for _, iosDevice := range parsedConfig.IOS { @@ -445,7 +445,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { fmt.Sprintf("parse ios config failed: %v", err)) } - device, err := uixt.NewIOSDevice(iosDevice.Options()...) + device, err := uixt.NewIOSDevice(iosDevice.Options.Options()...) if err != nil { return nil, errors.Wrap(err, "init ios device failed") } @@ -457,7 +457,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { return nil, errors.Wrap(err, "init ios driver failed") } - r.uixtDrivers[iosDevice.UDID] = driverExt + r.uixtDrivers[iosDevice.Options.UDID] = driverExt } // parse harmony devices config for _, harmonyDevice := range parsedConfig.Harmony { @@ -467,7 +467,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { fmt.Sprintf("parse harmony config failed: %v", err)) } - device, err := uixt.NewHarmonyDevice(harmonyDevice.Options()...) + device, err := uixt.NewHarmonyDevice(harmonyDevice.Options.Options()...) if err != nil { return nil, errors.Wrap(err, "init harmony device failed") } @@ -479,7 +479,7 @@ func (r *CaseRunner) parseConfig() (parsedConfig *TConfig, err error) { return nil, errors.Wrap(err, "init harmony driver failed") } - r.uixtDrivers[harmonyDevice.ConnectKey] = driverExt + r.uixtDrivers[harmonyDevice.Options.ConnectKey] = driverExt } return parsedConfig, nil